您好,登錄后才能下訂單哦!
怎么安裝Kubernets集群?針對這個問題,今天小編總結(jié)這篇有關(guān)安裝Kubernets集群的文章,希望幫助更多想解決這個問題的同學(xué)找到更加簡單易行的辦法。
系統(tǒng)初始化
首先是三個centos的服務(wù)器。然后開始安裝組件,這里為了方便三個機器上裝的軟件,拉的鏡像都一樣了,實際上可以少安裝的一點,不過反正也節(jié)約不了多少空間,因為這些軟件和鏡像不是很大。
先是關(guān)防火墻和selinux之類的操作確保這些設(shè)置不會影響到操作。
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config systemctl stop firewalld systemctl disable firewalld swapoff -a setenforce 0
還有記得把/etc/fstab里的有swap字符的一行給注釋掉,否則重啟后kubelet的服務(wù)會出錯。參考命令
sed -i 's/.*swap.*/#&/' /etc/fstab
安裝docker
接下來就是開始下軟件和拉鏡像的活了。它們同時存在的問題就是官方源不能下(因為它是某外國知名搜索引擎的服務(wù)器)。所以要加一下鏡像源。
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum list docker-ce --showduplicates | sort -r yum -y install docker-ce systemctl start docker systemctl status docker systemctl enable docker
安裝kubernets
安裝 kubelet、kubeadm、kubectl,注意一下版本,yum源下載的版本默認是最新的,那么容器鏡像至少要比這個版本新,如果沒有,請在下載的時候注明版本信息。我在做本次測試環(huán)境的時候所有的軟件和鏡像都是1.16.0的版本。
加阿里云的鏡像源。
cat>>/etc/yum.repos.d/kubrenetes.repo<<EOF [kubernetes] name=Kubernetes Repo baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF
yum install -y kubelet kubeadm kubectl systemctl enable kubelet && systemctl start kubelet
加上版本的下載方法。
yum install -y kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0
如果你已經(jīng)下錯了,可以用一些命令來解決。
rpm -qa | grep kube 查看版本
yum downgrade <package> //這個是yum降級的命令
先輸入命令
kubeadm config images list
它會告訴你,你需要下載哪些鏡像,你心里得有個底,至少這些鏡像你要先下載完成才能完成繼續(xù)。
當(dāng)我在做的時候,屏幕上顯示的是
k8s.gcr.io/kube-apiserver:v1.16.7
k8s.gcr.io/kube-controller-manager:v1.16.7
k8s.gcr.io/kube-scheduler:v1.16.7
k8s.gcr.io/kube-proxy:v1.16.7
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2
如果你輸入了命令,后面的版本可能會有變化,但是前面基本是是一致的。
然后開始用kubeadmin init的方法去初始化集群。不過直接運行網(wǎng)上常見的命令估計90%是失敗的。我在踩坑的時候找到兩個辦法,可以試試。
一個是:
kubeadm init --kubernetes-version=v1.16.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap --image-repository=registry.aliyuncs.com/google_containers
這個方法加了一個--image-repository=registry.aliyuncs.com/google_containers參數(shù)改變了下載地址。
不過這么做之后,你依舊要把這些docker鏡像的倉庫名改為k8s.gcr.io。
例如你在用命令docker images看到了鏡像的列表。
里面有一個鏡像叫做registry.aliyuncs.com/google_containers/kube-apiserver
那么你要用命令docker tag registry.aliyuncs.com/google_containers/kube-apiserver k8s.gcr.io/kube-apiserver
這樣的方法去改。有很多個這樣的鏡像它們的倉庫名都要改。改完之后你可以用docker rmi <images>逐個的把原來registry.aliyuncs.com/google_containers打頭的鏡像統(tǒng)統(tǒng)刪除。當(dāng)然你留著也沒問題。
用腳本去完成操作
#!/bin/bash## 使用如下腳本下載國內(nèi)鏡像,并修改tag為google的tagset -e KUBE_VERSION=v1.16.0 KUBE_PAUSE_VERSION=3.1 ETCD_VERSION=3.3.15-0 CORE_DNS_VERSION=1.6.2 GCR_URL=k8s.gcr.io ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers images=(kube-proxy:${KUBE_VERSION}kube-scheduler:${KUBE_VERSION} kube-controller-manager:${KUBE_VERSION} kube-apiserver:${KUBE_VERSION} pause:${KUBE_PAUSE_VERSION} etcd:${ETCD_VERSION} coredns:${CORE_DNS_VERSION}) for imageName in ${images[@]} ; do docker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName docker rmi $ALIYUN_URL/$imageNamedone done
然后再運行init命令(以下命令的參數(shù)怎么設(shè)置呢?第二行的為本機的IP,第三行是容器的版本,第四行則是pod網(wǎng)絡(luò),這個盡量不要改吧。)
sudo kubeadm init \ --apiserver-advertise-address 192.168.10.20 \ --kubernetes-version=v1.16.0 \ --pod-network-cidr=10.244.0.0/16
如下圖,然后初始化成功之后,會有一大堆的解釋,其中有幾條是讓你運行的命令,那么就照做吧。
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
還有一條命令kubeadm join不是在本機上運行的。它看起來像這個樣子
kubeadm join 192.168.10.20:6443 --token lixsl8.v1auqmf91ty0xl0k \ --discovery-token-ca-cert-hash sha256:c3f92a6ed9149ead327342f48a545e7e127a455d5b338129feac85893d918a55
你要記住這個命令,因為里面有唯一的token,這個每一臺都是不一樣的。即使你忘了也沒關(guān)系,你可以用
kubeadm token create --print-join-command
重新找到它。
還有就是可能你不是一次就能成功的,如果kubeadm init中途有失敗的,你需要用命令
kubeadm reset
來重置master節(jié)點。否則會報錯,報錯通常會說xxx.yaml already exist
還有關(guān)于swap分區(qū)引起的問題
程序會提醒你用以下的命令去查看問題。
systemctl status kubelet jouralctl -xeu kubelet
在完成這一切之后,你可以使用以下命令去查看pod的狀態(tài)。
kubectl get pods --all-namespaces -o wide
應(yīng)該類似于這樣的一個樣子。
其中coredns這個容器的狀態(tài)時pending的,還需要裝一下網(wǎng)絡(luò)的組件。
安裝flanneld
你已經(jīng)操作過以下的操作了吧?
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
然后下載quay.io的鏡像,同理用腳本去拉鏡像,或者自己去鏡像網(wǎng)站上拉鏡像。
#!/bin/bash set -e FLANNEL_VERSION=v0.11.0 # 在這里修改源 QUAY_URL=quay.io/coreos QINIU_URL=quay-mirror.qiniu.com/coreos images=(flannel:${FLANNEL_VERSION}-amd64 flannel:${FLANNEL_VERSION}-arm64 flannel:${FLANNEL_VERSION}-arm flannel:${FLANNEL_VERSION}-ppc64le flannel:${FLANNEL_VERSION}-s390x) for imageName in ${images[@]} ; do docker pull $QINIU_URL/$imageName docker tag $QINIU_URL/$imageName $QUAY_URL/$imageName docker rmi $QINIU_URL/$imageNamedone done
然后去網(wǎng)上下載這個文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
如果wget不能成功下載,可以在別的地方下載之后放到服務(wù)器里去,我就是用迅雷下載的這個文件。
kubectl apply -f kube-flanneld.yaml
node節(jié)點的安裝
我在配置node節(jié)點的時候偷懶了,我用了master相同的的方法把所有的軟件和鏡像都下載下來了,實際上只要其中的一些,根據(jù)前面那個博客上的做法,你可以把在master上已經(jīng)下載好的鏡像打包復(fù)制到node節(jié)點上。
## master上執(zhí)行docker save -o pause.tar k8s.gcr.io/pause:3.1 docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy## node上執(zhí)行docker load -i pause.tar docker load -i kube-proxy.tar ## node上執(zhí)行docker load -i pause.tar docker load -i kube-proxy.tar
flannel網(wǎng)絡(luò)也得在node上進行一遍。
然后還記得那條kubeadm join的命令嗎?就是那個帶token的那條,可以輸入了。
以上就是安裝Kubernets集群的詳細內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。