目 录CONTENT

文章目录

Kubeadm管理k8s集群系列07-更新集群节点的版本

cplinux98
2022-09-06 / 0 评论 / 0 点赞 / 433 阅读 / 937 字 / 正在检测是否收录...

00:文章简介

介绍如何使用kubeadm部署的k8s集群,如何更新集群节点的版本。

01:更新前提和注意事项

我们可能出于某些原因,想要对集群进行更新。

image

02:更新中涉及命令

2.1:master节点

查看当前最新版本软件

# apt-cache madison kubeadm | head -1
kubeadm |  1.22.2-00

# apt-cache madison kubelet | head -1
kubelet |  1.22.2-00

# apt-cache madison kubectl | head -1
kubectl |  1.22.2-00

安装最新软件

apt install kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00

查看更新的条件

kubeadm upgrade plan

执行kubeadm软件更新

kubeadm upgrade apply v1.22.2

2.1:node节点

查看软件版本

# apt-cache madison kubeadm | head -1
kubeadm |  1.22.2-00

# apt-cache madison kubelet | head -1
kubelet |  1.22.2-00

安装最新软件

apt install kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00

执行kubeadm软件更新

kubeadm upgrade node
# 老版本需要有 "--kubelet-version 版本号" 参数,对于最新版本k8s来说不需要

03:更新master实践

3.1:步骤

  1. 先更新master03节点,将master03从haproxy中踢出
  2. 使用master03节点下载最新的镜像,并打tag上传到harbor
  3. 更新软件
  4. 更新kubeadm
  5. 更新root权限

3.2:踢出master03

ha01

listen k8s-api-6443
        bind 172.20.200.200:6443
        mode tcp
        server master1 172.20.200.201:6443 check inter 3s fall 3 rise 5
        server master2 172.20.200.202:6443 check inter 3s fall 3 rise 5
#        server master3 172.20.200.203:6443 check inter 3s fall 3 rise 5
systemctl restart haproxy

3.3:更新镜像

apt install -y expect

# 执行脚本
#!/bin/bash
#login
expect -c "
spawn docker login harbor.linux98.com
        expect {
                \"*Username:*\" {send \"cpli\r\"; exp_continue}
                \"*Password:*\" {send \"A12345678a\r\"; exp_continue}
        } "

# download and upload
images=$(kubeadm config images list --kubernetes-version=v1.22.2 | grep -o '[a-z|-]*:.*')

for i in ${images}
do
    docker pull registry.aliyuncs.com/google_containers/$i
    docker tag registry.aliyuncs.com/google_containers/$i harbor.linux98.com/google_containers/$i
    docker rmi registry.aliyuncs.com/google_containers/$i
    docker push harbor.linux98.com/google_containers/$i
done

3.4:更新软件

apt install kubeadm=1.22.2-00 kubectl=1.22.2-00 kubelet=1.22.2-00

image

检查软件版本

# kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", 
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.1",   # master01还是1.22.1

# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2"

# kubelet --version
Kubernetes v1.22.2

查看更新条件

kubeadm upgrade plan

进行更新

kubeadm upgrade apply v1.22.2

更新完成

image

更新root权限

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

查看结果

image

3.5:更新其他master节点

步骤依然是

  1. 将要更新的节点在haproxy中踢出
  2. apt更新软件
  3. kubeadm更新集群
  4. 更新root权限

image

04:更新node实践

更新node节点的步骤

  1. 冻结node节点
  2. 驱离node节点上的pod
  3. apt升级软件
  4. kubeadm升级
  5. 取消node的冻结

4.1:冻结并驱离

kubectl cordon kubeadm-node01
kubectl drain kubeadm-node01 --delete-emptydir-data --ignore-daemonsets --force

image

4.2:升级软件

apt升级软件

apt install kubeadm=1.22.2-00 kubelet=1.22.2-00

kubeadm升级

kubeadm upgrade node

查看状态

image

重新激活node01

kubectl uncordon kubeadm-node01

image

4.3:更新其他node节点

按照上面的步骤依次更新其他节点,最后的效果

image

05:集群故障模拟

在我们规划主机时,就说过每个集群的数量应该为奇数,3个master节点可以允许1个故障,5个master节点可以允许2个故障。。。。

我们先把haproxy的代理全部打开

image

master03关机查看效果

image

master02关机查看效果

image

演示完成后打开master02和master03

image

0

评论区