一文學(xué)會利用Kubeadm安裝Kubernetes1.20
寫在前面
本文暫無理論,如果按照文章安裝應(yīng)該沒有異常,但不排除環(huán)境導(dǎo)致,本著先安裝在實踐中不斷地學(xué)習(xí)的原則,寫下這篇文章,文中部分來自于互聯(lián)網(wǎng)的故障處理辦法,基于kubeadm安裝,如果錯誤,請及時指出。
正文
環(huán)境
- 系統(tǒng)環(huán)境:CentOS 7.5
- master:192.168.31.55
- node:192.168.31.61
- Kubernetes版本:1.20.5
kubeadm安裝
1.添加國內(nèi)源
- cat <<EOF > /etc/yum.repos.d/kubernetes.repo
- [kubernetes]
- name=Kubernetes
- baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- repo_gpgcheck=0
- gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
- http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
- EOF
2.安裝kubeadm
- yum -y install kubelet kubeadm kubectl docker
3.查看鏡像版本
- kubeadm config images list
4.編輯安裝腳本
- images=(
- kube-apiserver:v1.20.5
- kube-controller-manager:v1.20.5
- kube-scheduler:v1.20.5
- kube-proxy:v1.20.5
- pause:3.2
- etcd:3.4.13-0
- coredns:1.7.0
- )
- for imageName in ${images[@]} ; do
- docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
- docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
- docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
- done
5.出現(xiàn)下圖,開啟docker服務(wù)。
- systemctl start docker && systemctl enable docker
kubeadm初始化集群
- kubeadm init --pod-network-cidr=172.17.0.0/16
關(guān)閉swap分區(qū)
- swapoff -a
出現(xiàn)異常
docker狀態(tài)異常
- docker logs [你的docker id]
查看docker日志
- ####這里多半為selinux未關(guān)閉####
- vim /etc/selinux/config
- reboot
- kubeadm reset
hosts文件未寫
添加hosts文件記錄

初始化成功

如果出現(xiàn)該錯誤請執(zhí)行下列命令
增加管理配置文件變量
- mkdir -p $HOME/.kube
- cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
解決NotReady問題

安裝flannel
如果出現(xiàn)超時,可以直接訪問連接,直接復(fù)制粘貼,手工創(chuàng)建yaml文件(實在無法訪問,可以私信我)
- kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
增加node節(jié)點
1.關(guān)閉selinux和swap(略,如上)
2.導(dǎo)入阿里源(略,如上)
3.安裝kubeadm
4.加入K8S集群
前提條件為hosts文件已經(jīng)添加,docker服務(wù)啟動(systemctl enable docker && systemctl start docker)

- ####在master獲取token及加入命令####
- kubeadm token create --print-join-command
- ####在node執(zhí)行接口####
- kubeadm join 192.168.31.55:6443 --token phuth9.n4lajzj9fx4fxvsr --discovery-token-ca-cert-hash sha256:47860bea93955508dbf06ef8a62a3d97b02fead4f4160e3cfb1c246067c041d9
獲取加入命令

此時加入成功

但此時狀態(tài)一直未Notready
查看kube-system下pod的情況,發(fā)現(xiàn)此時狀態(tài)為異常狀態(tài)
- kubectl get pods -n kube-system
異常pod
- ####查看詳細信息,主要是報錯信息####
- kubectl describe pod kube-flannel-ds-tllzn --namespace=kube-system
在node節(jié)點主動拉取鏡像
- docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
在master節(jié)點查看相關(guān)鏡像名稱及標簽,調(diào)整node節(jié)點標簽
- ####記住是主節(jié)點執(zhí)行該命令####
- docker image list
修改tag與master節(jié)點一致
- ####記住在node節(jié)點操作####
- docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
修改標簽
此時正常
再查看相關(guān)狀態(tài),發(fā)現(xiàn)kube-proxy依然有點問題,繼續(xù)查看

狀態(tài)異常
因為超時,同樣的方法處理
同樣的方法
查看此時的狀態(tài),應(yīng)該都是正常的
node正常
pod正常
總結(jié)
整體下來花費的時長比較長,過程不算曲折,node節(jié)點較折騰,但是官方文檔還算是給力,另外測試時間比較久,初學(xué)不久,如果錯誤請包涵,共勉。