k8s 小版本升级
众所周知k8s每一个月左右都会更新一次小版本所以在 Kubernetes 生态系统中,保持集群的版本更新是至关重要的。这不仅能够带来新的特性和改进,还能确保集群的安全性和稳定性。随着 Kubernetes 项目的快速发展,小版本的升级成为了集群维护的一个常规操作。
k8s集群:
我的版本是1.29.1 本次将k8s升级到1.29.2
一:配置软件源
我用的是ubuntu系统:
在/etc/apt/sources.list.d创建kubernetes.list文件
文件中配置是阿里云的软件源
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /
rhel系统:
sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
这样配置即可
二:升级前准备
将k8s控制节点设置为SchedulingDisabled状态
kubectl drain master1 --ignore-daemonsets --force#--ignore-daemonsets: 忽略daemonset资源#--force 强制
执行完之后查看
kuberctl get nodes
三:master节点升级
先查看1.29.2的版本
apt-cache show kubeadm|grep 1.29.2
1.29.2-1.1这个就是我们要升级的版本
解除apt包管理器对kubeadm包的锁定状态
因为默认是为了防止自动升级然后是锁定状态,现在我们要升级所以要解开
apt-mark unhold kubeadm
升级软件包
apt-get update
安装kubeadm1.29.2
apt-get install -y kubeadm='1.29.2-1.1'
安装完之后继续锁定kubeadm软件包
apt-mark hold kubeadm
查看版本
kubeadm version
可以看到kuberadm已经升级到了1.29.2
验证升级计划
kubeadm upgrade plan
选择升级的版本进行升级
kubeadm upgrade apply v1.29.2 --etcd-upgrade=false
--etcd-upgrade=false #表示不升级etcd,etcd数据库还是单独升级比较稳妥一点
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.29.2". Enjoy!
看到这个表示成功
升级kubectl 和kubelet
apt-mark unhold kubelet kubectl
#解除锁定状态apt-get update
#升级软件包apt-get install -y kubelet='1.29.2-1.1'
安装kubelet 1.29.2版本apt-get install -y kubelet='1.29.2-1.1'
安装kubectl 1.29.2版本apt-mark hold kubelet kubectl
#锁定kubelet kubectl的软件包
重启kubelet,查看master节点版本
可以看到已经是v1.29.2了
将master恢复
kubectl uncordon master1
四:node节点升级
将node节点设置为SchedulingDisabled状态
kubectl drain node1 --ignore-daemonsets --force
登录到node节点,进行操作
apt-mark unhold kubelet kubectl
#解除锁定状态apt-get update
#升级软件包apt-get install -y kubelet='1.29.2-1.1'
安装kubelet 1.29.2版本apt-get install -y kubelet='1.29.2-1.1'
安装kubectl 1.29.2版本apt-mark hold kubelet kubectl
#锁定kubelet kubectl的软件包systemctl daemon-reload
#重新加载 systemd 系统和服务管理器的配置systemctl restart kubelet
#重启kubelet
登录到master节点,将node状态恢复
kubectl uncordon node1
五:查看状态
kubectl get node
可以看到都已经到1.29.2
查看kube-system命名空间下的pod
也全是running状态