单机版k8s集群如何更换节点IP
本文最后更新于0 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

控制节点操作(master)

设置环境变量

export old_master_ip="10.20.3.58"
export new_master_ip="10.20.3.67"

查看证书信息

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done

备份配置和证书

cp -r /etc/kubernetes{,-bak}

更改configmap 把旧IP替换成新的IP

通过脚本安装的1.24版本的集群不需要执行此步骤

kubectl -n kube-system edit cm kubeadm-config 
kubectl -n kube-system edit cm kube-proxy

更改hosts

sed -i "s/$old_master_ip/$new_master_ip/g" /etc/hosts

更改kubeconfig

sed -i "s/$old_master_ip/$new_master_ip/g" /root/.kube/config

删除需要重新生成的证书

rm -rf /etc/kubernetes/pki/{apiserver*,front-proxy-client*,etcd/healthcheck*,etcd/peer*,etcd/server*}

重新签发证书

kubeadm init phase certs all \
  --apiserver-advertise-address ${new_master_ip} \
  --apiserver-cert-extra-sans ha.api.k8s.gm \
  --apiserver-cert-extra-sans 172.27.0.10 \
  --apiserver-cert-extra-sans 172.27.0.1 \
  --apiserver-cert-extra-sans 127.0.0.1 \
  --apiserver-cert-extra-sans kubernetes \
  --apiserver-cert-extra-sans kubernetes.default \
  --apiserver-cert-extra-sans kubernetes.default.svc \
  --apiserver-cert-extra-sans kubernetes.default.svc.cluster.local

再次查看证书

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done

更改haproxy (如果有)

sed -i "s/$old_master_ip/$new_master_ip/g" /etc/haproxy/haproxy.cfg 

systemctl restart haproxy && systemctl status haproxy

更改manifest

grep -rl $old_master_ip /etc/kubernetes | xargs sed -i "s/$old_master_ip/$new_master_ip/g"

重启服务

systemctl restart containerd
systemctl restart kubelet

工作节点操作

建议开多个终端进行操作,master节点一个终端,工作节点一个终端

设置环境变量

export old_ip="10.20.3.61"
export new_ip="10.20.3.68"
export old_master_ip="10.20.3.58"
export new_master_ip="10.20.3.67"

备份kubelet相关配置

cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.bak
cp -rf /var/lib/kubelet/ /var/lib/kubelet-bak

删除kubelet的客户端证书

rm -rf /var/lib/kubelet/pki/kubelet-client*

更改hosts

sed -i "s/$old_ip/$new_ip/g" /etc/hosts

更改haproxy (如果有)

sed -i "s/$old_master_ip/$new_master_ip/g" /etc/haproxy/haproxy.cfg 

systemctl restart haproxy && systemctl status haproxy

准备kubeadm-config.yaml文件

此文件是用于执行kubeadm集群的初始化,如果还有该文件,则直接修改此文件中的IP地址,如果没有该文件则需要重新生成

情况一

如果是通过脚本部署的k8s集群,默认存放位置为: /application/k8s/kubeadm-config.yaml , 如果还能找到该文件,则需要更改里面的IP地址

sed -i "s/$old_master_ip/$new_master_ip/g" /application/k8s/kubeadm-config.yaml

情况二

如果已经找不到该文件了,则需要重新生成,生成之后再更改里面的内容,生成命令为

kubeadm config print init-defaults > kubeadm-config.yaml

修改里面的内容

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.20.3.67  # 更改成新的master节点的IP地址
  bindPort: 6443 # 更改成apiserver的端口,默认就是6443
nodeRegistration:
  criSocket: unix:///run/containerd/containerd.sock  # 更改成containerd或者docker的sock路径
  imagePullPolicy: IfNotPresent
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
### 这下面的可以删掉 ###
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.k8s.io
### 这上面的可以删掉 ###
kind: ClusterConfiguration
kubernetesVersion: 1.24.0
networking:
  dnsDomain: cluster.local
  podSubnet: "172.29.0.0/16" # 更改pod的网段,如果没有则增加此段配置
  serviceSubnet: "172.27.0.0/16" # 更改service的网段,如果没有则增加此段配置
scheduler: {}
controlPlaneEndpoint: "ha.api.k8s.gm:16443" # 指定apiserver的地址,如果有代理,需要更改成代理的地址

在master节点重新生成节点的kubelet.conf文件

所有生成节点kubelet.conf的操作都在master节点进行

生成第一个工作节点的kubelet.conf文件,需要将第一个工作节点的主机名进行替换

kubeadm kubeconfig user \
  --org system:nodes \
  --client-name system:node:k8s-worker-3-61 \
  --config kubeadm-config.yaml \
  > kubelet.conf

将kubelet.conf拷贝至目标节点

生成成功后,将该文件拷贝至第一个工作节点上

scp kubelet.conf 10.20.3.68:/etc/kubernetes/kubelet.conf

重启kubelet

systemctl restart kubelet
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇