前期已经部署好一套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文件