k8s集群1.18.20更换节点ip地址段需求操作

发布于:2025-06-29 ⋅ 阅读:(22) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到