K8S升级版本

系统:Rocky Linux 8.6 x64

k8s1.26.1 -> 1.26.3

升级控制节点

查找最新版本

# 查找最新版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes

升级过程

yum install kubeadm-1.26.3-0
kubeadm version

# 验证升级计划,只有第一个主控节点升级使用“plan”,其它主控节点跟工作节点一样替换“plan”为“node”
kubeadm upgrade plan

# 选择要升级的目标版本
kubeadm upgrade apply v1.26.3

	[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.26.3". Enjoy!
	
	[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.

# 如果有多个主控节点,就依次清空主控节点进行升级
kubectl drain test-03

yum install -y kubectl-1.26.3-0 kubelet-1.26.3-0

systemctl daemon-reload 
systemctl restart kubelet

升级工作节点

yum install kubeadm-1.26.3-0
kubeadm version

# 验证升级计划,这里跟第一主控节点不一样
kubeadm upgrade node

# 在主控节点上,每次清空“test-04 test-05 test-06”中的一个节点并设置为不可调度,升级完再清空下一个
kubectl drain test-04 | test-05 |test-06 --ignore-daemonsets --delete-emptydir-data

yum install kubectl-1.26.3-0 kubelet-1.26.3

systemctl daemon-reload 
systemctl restart kubelet

# 升在主控节点上,级完之后恢复各节点调度
kubectl uncordon test-04 | test-05 | test-06

升级证书

检查证书是否过期

你可以使用 check-expiration 子命令来检查证书何时过期

kubeadm certs check-expiration

自动更新证书

kubeadm 会在控制面升级的时候更新所有证书。

手动更新证书

你能随时通过kubeadm certs renew命令手动更新你的证书。

此命令用 CA(或者 front-proxy-CA )证书和存储在/etc/kubernetes/pki中的密钥执行更新。

执行完此命令之后你需要重启控制面 Pods。因为动态证书重载目前还不被所有组件和证书支持,所有这项操作是必须的。 静态 Pods 是被本地 kubelet 而不是 API Server 管理, 所以 kubectl 不能用来删除或重启他们。 要重启静态 Pod 你可以临时将清单文件从 /etc/kubernetes/manifests/ 移除并等待 20 秒 (参考 KubeletConfiguration 结构 中的fileCheckFrequency 值)。 如果 Pod 不在清单目录里,kubelet 将会终止它。 在另一个 fileCheckFrequency 周期之后你可以将文件移回去,为了组件可以完成 kubelet 将重新创建 Pod 和证书更新。

警告:
如果你运行了一个 HA 集群,这个命令需要在所有控制面板节点上执行。

1.28.x升级到1.29.x

1.28.3以后的版本k8s官方更新了包仓库地址, 需要重新配置

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
	[kubernetes]
	name=Kubernetes
	baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
	enabled=1
	gpgcheck=1
	gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
	exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

yum install kubeadm --disableexcludes=kubernetes

yum命令中的--disableexcludes的作用

最后更新于