Kubernetes1.20.9摘掉一个master节点再重新加入(ETCD需要注意的)

Posted saynaihe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes1.20.9摘掉一个master节点再重新加入(ETCD需要注意的)相关的知识,希望对你有一定的参考价值。

背景:

参照持续升级过程:Kubernetes 1.16.15升级到1.17.17,Kubernetes 1.17.17升级到1.18.20Kubernetes 1.18.20升级到1.19.12 Kubernetes 1.19.12升级到1.20.9(强调一下selfLink)。由于系统都是centos7的。我想把节点摘掉重新安装一下系统(系统替换为centos8.2)然后重新加入集群。以k8s-master-03节点为例…

主机名系统ip
k8s-vipslb10.0.0.37
k8s-master-01centos710.0.0.41
k8s-master-02centos710.0.0.34
k8s-master-03centos710.0.0.26
k8s-node-01centos710.0.0.36
k8s-node-02centos710.0.0.83
k8s-node-03centos710.0.0.40
k8s-node-04centos710.0.0.49
k8s-node-05centos710.0.0.45
k8s-node-06centos710.0.0.18

1. 升级更新过程:

1.将k8s-master-03节点设置为不可调度,并驱逐节点上pod。

kubectl drain k8s-master-03 --ignore-daemonsets

2. 删除k8s-master-03节点

kubectl delete nodes k8s-master-03

3. 重装系统

服务器是腾讯云的cvm。后台直接选择了centos8镜像重新初始化了!(当然了 我自己定制化过一个containerd kubeadm的基础镜像,就直接引用了这个镜像呢)

4. 升级内核

虽然centos8默认内核是4.18了,但是我还是想个人升级一下内核:

1. 安装epel源

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

2. 查看并升级内核到ml版本

查询源中kernel版本,最终选择了ml主线最新版本…

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum  --enablerepo=elrepo-kernel  install  kernel-ml


最近网比较抽筋,很慢的

关于ml lt版本:
kernel-lt(长期支持版本)
kernel-ml(主线最新版本)
一般的长期稳定支持版就好了,嗯我手贱选择了ml版本了…

3. 编辑引导配置文件并重新生成引导

 vi /etc/default/grub 

设置 

GRUB_DEFAULT=0

grub2-mkconfig -o /boot/grub2/grub.cfg

4. 重启系统并验证内核

reboot 
uname -a 

5. 节点初始化

参照: centos8+kubeadm1.20.5+cilium+hubble环境搭建

到这里就好了!哦对还有下面的一部haproxy

注: 完成了hostnamectl set-hosetname k8s-master-03

6. 生成token

登陆k8s-master-01节点生成token discovery-token-ca-cert-hash

kubeadm token create
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

并打包key解压到k8s-master-03节点/etc/kubernetes/pki目录下(解压操作的就没有写了)

cd /etc/kubernetes/pki
zip -r key.zip ca.* sa.* front-proxy-ca.* etcd/ca* 

7. k8s-master-03节点重新加入集群

kubeadm join 10.0.0.37:6443 --token jj1ck5.hp7pn0lxxxxx     --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxx     --control-plane


what?etcd报错了?怎么回事呢?开始的时候etcd是有三个节点的,我删除后重新加入会不会是冲突了呢?
k8s-master-01主机安装了etcd客户端方法如下:

使用etcd命令查看相关信息:

etcd_v3 endpoint status --write-out=table
etcd_v3 member list

果真etcd信息中还是有k8s-master-03节点的相关信息,将其移除,并验证:

etcd_v3 member remove c86024150ccad21d
etcd_v3 member list


重新执行加入集群执行一下操作:
首先的reset

kubeadm reset

注: 然后继续解压一遍key.zip /etc/kubernetes/pki目录下

kubeadm join 10.0.0.37:6443 --token jj1ck5.hp7pn0lxxxxx     --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxx     --control-plane

	mkdir -p $HOME/.kube
	sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
	sudo chown $(id -u):$(id -g) $HOME/.kube/config

OK成功了!试验一下:

kubectl get nodes


嗯到了这里的还有修改/etc/kubernetes/manifests目录下kube-controller-manager.yaml kube-controller-manager.yaml --bind-adress=127.0.0.1为 --bind-adress=0.0.0.0


否则Prometheus一直报警的呢!

以上是关于Kubernetes1.20.9摘掉一个master节点再重新加入(ETCD需要注意的)的主要内容,如果未能解决你的问题,请参考以下文章

中科大校友一次意外事故,造就了让3000万人摘掉眼镜的手术

被讨厌的勇气

被讨厌的勇气

MAST20006 离散分布

突发流量引发Dubbo拥堵,该怎么办?

k8s实现灰度发布