kubernetes学习九:节点变更IP

1 变更脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#! /bin/bash
# 命令格式: k8s-update-ip.sh 旧IP 新IP

# 修改集群配置文件内的IP
sed -i "s/$1/$2/" /etc/kubernetes/manifests/etcd.yaml
sed -i "s/$1/$2/" /etc/kubernetes/manifests/kube-apiserver.yaml
sed -i "s/$1/$2/" /etc/hosts

# 重新生成新config
# 可以逐个生成,也可以直接all,全部生成
# --kubernetes-version=v1.23.3 指定集群当前版本,否则抱版本异常信息
rm -rf /etc/kubernetes/*.conf
# kubeadm init phase kubeconfig admin --kubernetes-version=v1.23.3 --apiserver-advertise-address $2
kubeadm init phase kubeconfig all --kubernetes-version=v1.23.3 --apiserver-advertise-address $2

# 重新生成证书
rm -rf /etc/kubernetes/pki/apiserver*
rm -rf /etc/kubernetes/pki/front-proxy-client*
rm -rf /etc/kubernetes/pki/etcd
kubeadm init phase certs all --kubernetes-version=v1.23.3 --apiserver-advertise-address $2

# 新建/run/flannel/subnet.env
# 这个文件会消失需要手动生成下,否则kubele服务报错找不到这个文件
# 我集群cni网络地址段初始配置 podSubnet:110.166.10.0/16,下面配置如下修改
cat > /run/flannel/subnet.env << EOF
FLANNEL_NETWORK=110.166.0.0/16
FLANNEL_SUBNET=110.166.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
EOF

# 重启服务
systemctl restart docker
systemctl restart kubelet

# 验证
kubectl get nodes --kubeconfig=/etc/kubernetes/admin.conf

# 复制配置文件,使用户可用kubectl命令
yes|cp -i /etc/kubernetes/admin.conf /home/zhaohuan/.kube/config
chown zhaohuan:zhaohuan /home/zhaohuan/.kube/config

2 kube-proxy配置文件修改IP(坑)

1
2
3
4
5
6
7
8
9
10
# (这里是个大坑,很多教程里面没有提到)
# 不修改的話会有如下异常:flannel服务无法启动,一直报错连接api超时,kube-proxy日志报错会显示请求的api地址还是旧IP
# 编辑kube-proxy的configmap配置文件,修改API地址为新的IP
kubectl edit -n kube-system configmap kube-proxy

# 重启服务
systemctl restart docker
systemctl restart kubelet

# 剩下的就OK了

参考:

https://www.cnblogs.com/chaojiyingxiong/p/12047628.html

https://cloud.tencent.com/developer/article/2008321

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!