kubernetes 版本升级
kubeadm集群版本升级计划:
| 组件 | 升级前版本 | 升级后版本 | 
|---|---|---|
| kubeadm | 1.22.5 | 1.24.15 | 
| kubelet&kubectl | 1.22.5 | 1.24.15 | 
| Calico | v3.21 | v3.25.1 | 
| containerd | 1.5.8 | 1.6.9 | 
底层系统:Centos 8.2
集群节点分布:3master+7node
注:此升级文档仅适用于kubeadm部署的k8s集群。
一:ETCD备份
操作节点:k8s master 节点
1:etcdctl下载
wget https://github.com/etcd-io/etcd/releases/download/v3.5.9/etcd-v3.5.9-linux-amd64.tar.gz
tar -zxvf etcd-v3.5.9-linux-amd64.tar.gz
mv ./etcd-v3.5.9-linux-amd64/etcdctl /usr/local/bin/
etcdctl version
2:编辑etcd备份脚本
mkdir -pv /data/etcd_backup/
cd /data/etcd_backup/
echo '''timestamp=`date +%Y%m%d-%H%M%S` 
back_dir="/data/etcd_backup/" 
endpoints="https://127.0.0.1:2379" 
cert_file="/etc/kubernetes/pki/etcd/server.crt" 
key_file="/etc/kubernetes/pki/etcd/server.key" 
cacert_file="/etc/kubernetes/pki/etcd/ca.crt" 
ETCDCTL_API=3 /usr/local/bin/etcdctl \
--endpoints="${endpoints}" \
--cert=$cert_file \
--key=$key_file \
--cacert=$cacert_file \
snapshot save $back_dir/snapshot_$timestamp.db''' > etcd_backup.sh
sh etcd_backup.sh
二:Master升级
由于目前版本为1.22.5,升级到1.24.15,中间需要跨一个1.23大版本,官方升级方案不支持跨大版本升级,也就是需要先升级到1.23.x,然后再升级到1.24.15。
所以kubeadm详细升级顺序为:1.22.5 -> 1.23.17 -> 1.24.15
注:本文档仅介绍从1.22升级到1.23步骤,因为1.22升级到1.23涉及到网络插件Calico和containerd升级,从1.23升级到1.24不涉及。步骤1-4均为在第一台master节点上执行,如果环境为单master节点,请忽略步骤4
1:kubeadm升级
- 
查看可用升级版本确认升级版本 
 yum list --showduplicates kubeadm --disableexcludes=kubernetes
- 
升级第一个master节点 
 yum install -y kubeadm-1.23.17-0 --disableexcludes=kubernetes
- 
确认kubeadm升级成功 
 kubeadm version
- 
升级检查准备 
 kubeadm upgrade plan
- 
升级 
 kubeadm upgrade apply v1.23.17
2: 网络插件Calico升级
calico版本有对应支持的k8s版本,通过此链接可以查看到Calico v3.21版本最高支持k8s v1.22版本。通过此链接可以查看到Calico v3.25版本支持k8s v1.23-v1.26版本,此次k8s升级的最终版本为1.24,在Calico v3.25版本支持的范围内。
按照升级文档进行升级,注意需要按照最开始calico的安装方式进行升级,此环境中,calico最开始是通过operator方式进行安装的,所以此次按照operator的方式升级。
- 
下载operator yaml文件 
 curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/tigera-operator.yaml -O
- 
通过kubectl 升级 
 kubectl replace -f tigera-operator.yaml
- 
查看并等待升级完成 
 kubectl get pod -A -w | grep calico
 等待pod所有状态全部为running后升级完成。
3: kubelet&kubectl升级
- 
清空节点(注意替换node-name) 
 kubectl drain {node-name} --ignore-daemonsets
- 
升级kubelet&kubectl 
 yum install -y kubelet-1.23.17-0 kubectl-1.23.17-0 --disableexcludes=kubernetes
- 
重启kubelet 
 systemctl daemon-reload
 systemctl restart kubelet
- 
恢复节点(第一次升级到1.23.17时,后续还要还要升级containerd,忽略此步骤,第二次升级到1.24.15时不需要升级containerd,就需要执行此步骤) 
 kubectl uncordon {node-name}
4: containerd升级
- 
关闭kubelet和containerd服务。 
 systemctl stop kubelet
 systemctl stop containerd
- 
备份containerd配置文件(如果配置文件没有做任何客制化修改,请忽略此步骤。) 
 cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
- 
下载containerd 1.6.9 
 wget https://github.com/containerd/containerd/releases/download/v1.6.9/cri-containerd-1.6.9-linux-amd64.tar.gzcontainerd下载界面有三种类型包,区别如下: - containerd-1.6.9-*.tar.gz:只包含containerd相关二进制文件和ctr命令。ctr命令为containerd默认原生命令,解压后文件树状图如下
  - 
cri-containerd-1.6.9-*.tar.gz:包含containerd相关二进制文件和ctr命令,还包含crictl相关的命令和二进制文件以及runc,crictl命令针对containerd作为k8s集群底层容器优化了命令和命令执行结果的展示方式,详情见官方介绍,k8s集群中建议使用此包,解压后文件树状图如下  
- 
cri-containerd-cni-1.6.9-*.tar.gz: 包含containerd相关二进制文件和ctr命令和crictl相关的命令和二进制文件外,还包含cni网络插件,由于我们使用calico网络插件,所以不使用此包。解压后文件树状图如下  
 
- 
解压至根目录 
 tar -zxvf cri-containerd-1.6.9-linux-amd64.tar.gz -C /
- 
初始化配置文件,然后根据备份的配置文件修改新配置文件,不建议直接使用旧配置文件,可能会出现配置文件版本不兼容问题。 containerd config default > /etc/containerd/config.toml
- 
启动containerd和kubelet systemctl daemon-reload systemctl start containerd systemctl start kubelet建议在kubelet启动后通过 journalctl -xeu kubelet观察kubelet是否启动成功。如果出现以下报错 则需要升级依赖包libseccomp,参考此链接,执行命令: yum update -y libseccomp && systemctl restart kubelet
- 
恢复节点 
 kubectl uncordon {node-name}
至此,master第一个节点k8s-master1 升级完成,同时网络插件也升级完成。
5: 其余master节点升级
- 
kubeadm升级 
yum install -y kubeadm-1.23.17-0 --disableexcludes=kubernetes
kubeadm upgrade node
- 
kubelet&kubelet升级 见步骤3 
- 
containerd升级 
 见步骤4
三:Node升级
1: kubeadm升级
yum install -y kubeadm-1.23.17-0 --disableexcludes=kubernetes
kubeadm upgrade node
2: kubelet&kubelet升级
 见步骤二.3
3: containerd升级
 见步骤二.4
本文来自博客园,作者:鲜小橙,转载请注明原文链接:https://www.cnblogs.com/big-cousin/p/17571831.html

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号