前期已經部署好一套k8s集群1.18.20版本,1個master,2個node節點,使用節點地址段為192.168.66.0/24,現在因測試任務需要臨時調整到192.168.40.0/24,以下記錄一下相關操作步驟,請供參考學習。
一、環境準備
k8s-master01 192.168.66.200?CentOS Linux 7 (Core)
k8s-node01? ? 192.168.66.201?CentOS Linux 7 (Core)
k8s-node02?? ?192.168.66.100?CentOS Linux 7 (Core)
二、查詢集群狀態正常
三、備份修改操作
3.1 備份所有關鍵配置和證書
在master、node節點上依次做如下備份操作
cp -r /etc/kubernetes /etc/kubernetes-bak
cp /var/lib/kubelet/config.yaml /var/lib/kubelet/config.yaml-bak
3.2 逐個節點進行修改,從master節點開始
修改節點網卡的IP地址(master、node節點)
sed -i? 's/192.168.66/192.168.40/g' /etc/sysconfig/network-scripts/ifcfg-ens33
重啟網卡
systemctl restart network
3.3 修改容器網絡插件配置(calico)
kubectl edit? ippool default-ipv4-ippool?
修改cidir中是否有使用192.168.66段地址,若無進行下一步
3.4 重啟控制平面組件(apiserver, controller-manager, scheduler)
sed -i 's/192.168.66/192.168.40/g' /etc/kubernetes/manifests/*.yaml
將組件yaml配置文件移走
mv?/etc/kubernetes/manifests/kube-*.yam /root/
docker ps | grep -E 'kube-apiserver|kube-controll|kube-schedu'
查詢組件容器是否都已停止,確認后再將配置移動回來
mv /root/kube-* /etc/kubernetes/manifests/
檢查服務是否正常
docker ps | grep -E 'kube-apiserver|kube-controll|kube-schedu'
修改/etc/kubernetes下配置文件
sed -i 's/192.168.66/192.168.40/g' /etc/kubernetes/*.conf
重啟docker和kubelet服務
systemctl restart docker kubelet
systemctl status docker kubelet
3.5 更新worker節點配置
sed -i 's/192.168.66/192.168.40/g' /etc/kubernetes/*.conf
重啟docker和kubelet服務
systemctl restart docker kubelet
systemctl status docker kubelet
3.6 驗證網絡連通性
從master節點ping node節點是否正常通信
ping k8s-node01
ping k8s-node02
3.7 檢查容器集群狀態
執行kubectl get node 查詢提示
?說明Kubernetes API 服務器的證書沒有包含新的 IP 地址,需要重新生成apiserver證書
備份現有證書
cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak
刪除現有證書:
rm -rf?/etc/kubernetes/pki/apiserver.*
使用 kubeadm 重新生成證書
kubeadm init phase certs apiserver --apiserver-advertise-address 192.168.40.200
更新 kubeconfig 文件:
kubeadm init phase kubeconfig admin --apiserver-advertise-address 192.168.40.200 cp /etc/kubernetes/admin.conf ~/.kube/config
重啟 API 服務器:
docker restart $(sudo docker ps | grep kube-apiserver | awk '{print $1}')
修改kube-proxy 配置
kubectl edit cm -n kube-system kube-proxy
找到?kubeconfig.conf
?部分,更新?server
?地址:
重啟 kube-proxy
kubectl delete pod -n kube-system -l k8s-app=kube-proxy
查詢集群狀態
???????
備注:calico的pod若出現異常可以重新再發布一下yaml文件