背景:

参照持续升级过程: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-vip slb 10.0.0.37
k8s-master-01 centos7 10.0.0.41
k8s-master-02 centos7 10.0.0.34
k8s-master-03 centos7 10.0.0.26
k8s-node-01 centos7 10.0.0.36
k8s-node-02 centos7 10.0.0.83
k8s-node-03 centos7 10.0.0.40
k8s-node-04 centos7 10.0.0.49
k8s-node-05 centos7 10.0.0.45
k8s-node-06 centos7 10.0.0.18

1. 升级更新过程:

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

  1. 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

image.png

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

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

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

image.png
最近网比较抽筋,很慢的

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

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

 vi /etc/default/grub 

设置 

GRUB_DEFAULT=0

image.png

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

image.png

4. 重启系统并验证内核

reboot 
uname -a

image.png

5. 节点初始化

参照: centos8+kubeadm1.20.5+cilium+hubble环境搭建
image.png
到这里就好了!哦对还有下面的一部haproxy
image.png
注: 完成了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

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

image.png
重新执行加入集群执行一下操作:
首先的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

image.png

    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

image.png
嗯到了这里的还有修改/etc/kubernetes/manifests目录下kube-controller-manager.yaml kube-controller-manager.yaml —bind-adress=127.0.0.1为 —bind-adress=0.0.0.0
image.png
image.png
否则Prometheus一直报警的呢!