云原生··By/蜜汁炒酸奶

kubernetes更换master的ip

记录一下之前更换 kubeadm init 通过 --apiserver-advertise-address 设置的ip的过程

  1. 将 kubernetes 配置目录/etc/kubernetes中的旧ip替换成新ip
# 暂时申请root权限,避免之后的语句没有添加 sudo 导致权限不足
sudo su
# 定义旧ip变量
oldip=192.168.49.2
# 定义新ip变量
newip=192.168.49.1
# 进入 /etc/kubernetes 目录
cd /etc/kubernetes
# see before ------ 查看包含旧ip的文件
find . -type f | xargs grep $oldip
# modify files in place ------ 查询并替换ip
find . -type f | xargs sed -i "s/$oldip/$newip/"
# see after ------ 查看包含新ip的文件
find . -type f | xargs grep $newip
## 备份证书目录
mkdir ~/k8s-old-pki
cp -Rvf /etc/kubernetes/pki/* ~/k8s-old-pki
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  1. 生成新的 config 配置文件文件
# 重命名配置文件,达到删除作用,避免因为存在该文件导致直接使用此文件。
mv admin.conf admin.conf.bak
# 生成新的配置文件
kubeadm init phase kubeconfig admin --apiserver-advertise-address=192.168.49.1 --kubernetes-version=v1.21.
1
2
3
4

需要在目录 /etc/kubernetes 中进行,若当前目录不是,则需先通过cd /etc/kubernetes 进入该目录

文件 admin.conf 中包含需修改的ip以及基于该ip的证书,所以必须重新生成,不然之后访问浏览器会因证书ip与访问的不同问题拦截访问。

--kubernetes-version用于指定安装的版本号,在kubeadm init不是必须参数,若出现如下提示,可通过该参数清除:

I0911 21:37:17.744247  340548 version.go:254] remote version is much newer: v1.22.1; falling back to: stable-1.21
1
  1. 删除老证书,生成新证书
cd pki
# 重命名老证书,达到删除作用
mv apiserver.key apiserver.key.bak
mv apiserver.crt apiserver.crt.bak
# 生成新证书
kubeadm init phase certs apiserver  --apiserver-advertise-address 192.168.49.1 --kubernetes-version=v1.21.4 
1
2
3
4
5
6
  1. 重启docker
service docker restart
service kubelet restart
1
2
  1. 检测效果

下面的选一种检测即可

# 1. 查看 kubelet 启动状态
systemctl status  kubelet
# 2.1 查看当前集群配置
kubeadm config view
# 2.2 查看当前集群配置,执行上一条语句时,新版的会提示指令已被弃用,请用下面这条语句查看
kubectl get cm -o yaml -n kube-system kubeadm-config
# 3. 获取节点信息,当在 /etc/kubernetes 中执行该语句时可增加 --kubeconfig=admin.conf 更新kubectl使用的admin.conf配置文件
kubectl get nodes
1
2
3
4
5
6
7
8

参考资料

Changing master IP address

k8s的master更换ip

预览
Loading comments...
0 条评论

暂无数据

example
预览