云原生 · · 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. 生成新的 config 配置文件文件
# 重命名配置文件,达到删除作用,避免因为存在该文件导致直接使用此文件。 mv admin.conf admin.conf.bak # 生成新的配置文件 kubeadm init phase kubeconfig admin --apiserver-advertise-address=192.168.49.1 --kubernetes-version=v1.21.

需要在目录 /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. 删除老证书,生成新证书
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. 重启docker
service docker restart service kubelet restart
  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

参考资料

Changing master IP address

k8s的master更换ip

评论已关闭

example
C
蜜汁炒酸奶

当前处于试运行期间,可能存在不稳定情况,敬请见谅。

欢迎点击此处反馈访问过程中出现的问题