k8s集群环境修改ip地址后,如何恢复环境
说明:该方法是通过kubeadmrest 方法进行恢复,比较适合自己搭建测试环境后,恢复测试使用,跟进自己的情况参看使用。查询了部分参看文章,因为我部署时,使用的是kubeadm init \--apiserver-advertise-address=10.0.2.40 \--image-repository registry.aliyuncs.com/google_containers进行部署的
·
说明:
该方法是通过kubeadm rest 方法进行恢复,比较适合自己搭建测试环境后,恢复测试使用,跟进自己的情况参看使用。
查询了部分参看文章,因为我部署时,使用的是
kubeadm init \
--apiserver-advertise-address=10.0.2.40 \
--image-repository registry.aliyuncs.com/google_containers
进行部署的,不是通过kubeadm-config.yaml配置文件进行部署,本篇文章应该不算如何恢复环境,只能够是重新初始化k8s环境。
1. 理解说明:
1). 当集群ip发生变化后,k8s的master和node节点的通信就会有异常,因为之前的配置文件中,存储的ip地址都是旧的ip地址,所以当ip发生变化后,集群的master和node是无法感知到,所以就需要重新初始化环境,告知master和node节点。
2). 因为之前部署k8s环境,相关的yum源和工具,镜像源其实都已经下载安装完毕了,当集群ip被修改后,需要做的就是重新初始化环境,让master和node节点感知到ip变化了,需要重新进行通信协商。
2. 具体的操作说明:
1) 修改/etc/hosts的主机名称和IP的对应关系,好像初始化后,启动的etcd会和主机名对应上,具体细节暂未了解,但是需要修改。
2)删除# rm -rf $HOME/.kube(暂时不知道啥影响,推测是因为node和master协商通信会用到)
3)修改/etc/kubernetes/文件夹里的*.conf文件,把这些文件中有旧IP的地方全都替换成你的新IP(好像进行kubeadm reset的时候会清除掉,不修改也无所谓,但是我操作了)
4) 备份旧证书(好像没用,kubeadm reset好像会清除,kubeadm init初始化时,好像也会生成新的)
mv /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old
mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old
mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old
mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old
mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old
mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old
5)在master,node节点执行kubeadm reset,清除环境。
- 运行这条命令将会还原当前节点上 kubeadm init 或者 kubeadm join 所做的所有更改。且如果使用外部 etcd,kubeadm reset 将不会删除任何 etcd 数据。这意味着如果再次使用相同的 etcd 节点运行 kubeadm init,你将看到以前的集群状态
- 推测正常的修改IP的集群环境,不需要执行这个一步kubeadm reset,应该kubeadm init就可以,kubeadm reset有啥影响,暂时不确定,所以这一步,参看执行。
6)在master节点,执行kubeadm init命令,命令如下(节点保存kubeadm join 内容,后续node节点注册需要):
kubeadm init \
--apiserver-advertise-address=10.0.2.40 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.100.0.0/16 \
--pod-network-cidr=10.244.0.0/16
- 执行kubeadm init 需要指定一下cluster Ip 网段和pod的IP网段,不然后续安装flannel时,master和node之前的网络通信可能会有异常,指定网段时,选择适合自己的网段,避免出现ip地址冲突。
7)执行完毕init后,执行一下(不确定有啥用):
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
8)安装Pod网络插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
9)检查部署情况,所有pod都处于running状态:
kubectl get pods -n kube-system
10) 在node节点上执行 kubeadm join(这个是在执行kubeadm init时生成的。)
kubeadm join 10.0.20.40:6443 --token ks0l71.ia2neg4uw00xxd3p \
--discovery-token-ca-cert-hash sha256:56958d442a88b1c3c04fc37078bf264f243f752f8ec83a8eb387d5c825fb5104
11)检查部署成功情况,我,所有的node节点和master节点都处于ready状态
[root@master kubernetes]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
242 Ready 74m v1.14.2
243 Ready 74m v1.14.2
master Ready master 83m v1.14.2
总结:
- 安装上面的步骤把k8s的环境恢复,可以正常的通过yaml文件进行启动相关的容器业务,该方法只是进行参看,欢迎交流讨论。
更多推荐
已为社区贡献5条内容
所有评论(0)