Kubernetes集群添加新集群節(jié)點(diǎn)
添加worker節(jié)點(diǎn)
參考文檔https://gitee.com/open-hand/kubeadm-ha/blob/release-1.21/docs/02/%E6%B7%BB%E5%8A%A0%20worker%20%E8%8A%82%E7%82%B9.md
添加工作節(jié)點(diǎn)與集群安裝時初始化工作節(jié)點(diǎn)一樣,可以在主節(jié)點(diǎn)上執(zhí)行,也可以在要加入的節(jié)點(diǎn)執(zhí)行,只要執(zhí)行主機(jī)安裝ansible,并且可以訪問主節(jié)點(diǎn)及要加入的新節(jié)點(diǎn)即可
待加入節(jié)點(diǎn)未安裝docker
需要加入的節(jié)點(diǎn)沒有安裝docker,并且沒有裝其他應(yīng)用執(zhí)行如下指令應(yīng)該就能正常安裝成功
ansible-playbook -i example/hosts.s-master.ip.ini 81-add-worker.yml
待加入節(jié)點(diǎn)已安裝docker
對于已經(jīng)安裝docker并且部署了應(yīng)用服務(wù)的主機(jī),添加新節(jié)點(diǎn)可能會出現(xiàn)各種問題
檢查端口占用
kubernetes集群部署需要占用端口,對于已經(jīng)安裝docker、自己應(yīng)用的主機(jī)需要先檢查端口是否被占用,如果端口被占用將會導(dǎo)致對應(yīng)安裝組件無法運(yùn)行查看文檔了解需要使用到的端口
添加kubernetes yum源
添加/etc/yum.repos.d/kubernetes.repo文件,配置kubernetes yum源,內(nèi)容如下
[kubernetes]
baseurl = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled = 0
gpgcheck = 0
name = Kubernetes
檢查已安裝docker版本
安裝Kubernetes集群不同版本對docker版本也有要求,如果docker版本不在Kubernetes版本支持范圍會報如下錯誤
如果不在支持范圍,并且docker中已經(jīng)運(yùn)行了應(yīng)用不能卸載,則需要對docker進(jìn)行升級或降級
yum對docker進(jìn)行升級到指定版本
# 查看docker-ce版本列表
yum list docker-ce --showduplicates
# 查看docker-ce-cli版本列表
yum list docker-ce-cli --showduplicates
# 選取需要的版本進(jìn)行升級
yum update -y docker-ce-20.10.21-3.el8 docker-ce-cli-20.10.21-3.el8
yum對docker進(jìn)行降級到指定版本
# 查看docker-ce版本列表
yum list docker-ce --showduplicates
# 查看docker-ce-cli版本列表
yum list docker-ce-cli --showduplicates
# 將docker降到指定版本
yum downgrade --setopt=obsoletes=0 -y docker-ce-20.10.21-3.el8 docker-ce-cli-20.10.21-3.el8
如果從24.0.2-1.el8版本降到20.10.21-3.el8版本則會報如下錯誤
需要使用如下指令將沖突包docker-buildx-plugin卸載,然后再執(zhí)行降級指令
yum remove docker-buildx-plugin -y
修改docker cgroup driver
修改/etc/docker/daemon.json文件內(nèi)容指定cgroupdriver為systemd,如果不指定默認(rèn)是使用cgroupfs。并且指定docker拉取鏡像倉庫,默認(rèn)是使用dockerhub的公共鏡像庫比較慢。如果在你主機(jī)上不存在該文件就創(chuàng)建一個
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"http://hub-mirror.c.163.com"
],
"bip": "172.17.10.1/16",
"data-root": "/u01/data/docker"
}
更新完daemon.json文件后運(yùn)行下面指令使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
- 如果啟動docker失敗則可以運(yùn)行journalctl -xe查看詳情,首先考慮daemon.json內(nèi)容是否正確
注意不要使用命令sed -i “s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g” /usr/lib/systemd/system/docker.service更新cgroupdriver,如果使用上述指令更新導(dǎo)致docker無法啟動,可能是因?yàn)?usr/lib/systemd/system/docker.service中–exec-opt native.cgroupdriver=systemd配置與daemon.json文件中"exec-opts": [“native.cgroupdriver=systemd”]沖突,可以去除/usr/lib/systemd/system/docker.service中–exec-opt native.cgroupdriver=systemd配置
執(zhí)行添加新節(jié)點(diǎn)指令
執(zhí)行如下指令
ansible-playbook -i example/hosts.s-master.ip.ini 81-add-worker.yml
nginx運(yùn)行失敗
- 上述錯誤是nginx運(yùn)行失敗造成的,運(yùn)行失敗的原因大概率是端口占用導(dǎo)致
運(yùn)行如下命令,查看運(yùn)行失敗的容器
docker ps -a
查看k8s_lb-nginx_lb-nginx容器日志,查看具體原因
docker logs -f 94fbc47c047e
- 可以看到錯誤原因是8081端口占用導(dǎo)致
yum基礎(chǔ)軟件包報錯
嘗試執(zhí)行如下指令
yum clean all && yum update
- 注意yum update會更新yum安裝組件的版本到最新,慎用
如果設(shè)置了yum代理服務(wù)可能會報如下錯誤
- 此錯誤是設(shè)置了代理服務(wù)器,可以通過/etc/yum.conf調(diào)整代理或去除代理
docker停止運(yùn)行執(zhí)行安裝報錯
- 當(dāng)前節(jié)點(diǎn)已安裝docker,但報錯確是crictl pull拉取鏡像,而不是docker pull。檢查發(fā)現(xiàn)docker未正常運(yùn)行
首先嘗試如下命令
sudo systemctl daemon-reload
sudo systemctl restart docker
得到如下報錯
- 從報錯可以發(fā)現(xiàn)并沒有說明具體報錯原因,可以按提示嘗試執(zhí)行systemctl status docker.service或journalctl -xe查看有價值信息
執(zhí)行如下指令查看docker重啟失敗詳細(xì)信息
journalctl -xe
得到如下詳情信息
- 從報錯可以看出,overlay2配置問題導(dǎo)致的,將overlay2配置從/etc/docker/daemon.json中移除。如果docker啟動不了大概率是/etc/docker/daemon.json配置有問題
docker驅(qū)動以及端口占用報錯
上面三張圖展示的是docker驅(qū)動設(shè)置、端口占用導(dǎo)致的添加節(jié)點(diǎn)失敗錯誤信息。如果反饋信息不能判斷問題可以嘗試在對應(yīng)節(jié)點(diǎn)執(zhí)行手工執(zhí)行命名并添加–v=5查看具體原因
kubeadm join --config /etc/kubernetes/kubeadm-config.yaml
--ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests,FileAvailable--etc-kubernetes-pki-ca.crt --v=5
-
cgroup driver驅(qū)動配置問題:按上面配置cgroup driver
-
某個地址訪問不通:查看對應(yīng)端口組件是否正常運(yùn)行,大概率是端口被占用了
-
127.0.0.1:8443: 通常是nginx沒有啟動,端口被占用
-
127.0.0.1:10248:通常是解決完問題之后重新執(zhí)行添加節(jié)點(diǎn),忘記應(yīng)該先要清理掉殘留文件導(dǎo)致文章來源:http://www.zghlxwxcb.cn/news/detail-708748.html
-
把問題排查完之后清理殘留文件重新執(zhí)行
在處理好部署報錯問題后,需要將安裝失敗時殘留的服務(wù)、文件清理干凈,以免引發(fā)新的問題。執(zhí)行如下命令完成文件清理文章來源地址http://www.zghlxwxcb.cn/news/detail-708748.html
kubeadm reset -f
modprobe -r ipip
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
yum clean all
yum remove kube*
到了這里,關(guān)于Kubernetes集群添加新集群節(jié)點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!