kaisawind's blog
  • 关于
  • 所有帖子

centos更新系统不更新k8s - Thu, Mar 3, 2022

centos更新系统不更新k8s

centos更新系统不更新k8s

提示: Linux发行版更新较快,命令可能因版本不同而有差异。

问题背景

在CentOS系统中执行yum update时,可能会同时更新Kubernetes组件,导致集群版本不兼容。

解决方法

方法1:排除Kubernetes仓库(推荐)

# 更新时排除kubernetes仓库
yum update --disableexcludes=kubernetes

# 或简写
yum update --disablerepo=kubernetes

方法2:修改yum配置

编辑/etc/yum.repos.d/kubernetes.repo:

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl kubernetes-cni

添加exclude行后,yum update会自动跳过这些包。

方法3:使用版本锁定

# 安装yum-plugin-versionlock
yum install yum-plugin-versionlock

# 锁定Kubernetes版本
yum versionlock kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0

# 查看锁定的包
yum versionlock list

# 清除版本锁定
yum versionlock clear

方法4:指定包更新

# 只更新特定包
yum update --exclude=kubelet,kubeadm,kubectl

# 更新除k8s外的所有包
yum update --exclude='kube*'

验证配置

# 查看可用更新
yum check-update

# 查看k8s包版本
yum list kubelet kubeadm kubectl --showduplicates

# 查看已安装版本
rpm -qa | grep kube

Kubernetes版本升级

如果需要升级Kubernetes:

# 1. 查看可用版本
yum list kubeadm --showduplicates | sort -r

# 2. 安装指定版本
yum install kubeadm-1.24.0-0 --disableexcludes=kubernetes

# 3. 升级集群
kubeadm upgrade apply v1.24.0

# 4. 升级kubelet和kubectl
yum install kubelet-1.24.0-0 kubectl-1.24.0-0 --disableexcludes=kubernetes

# 5. 重启kubelet
systemctl restart kubelet

批量更新脚本

#!/bin/bash
# update_except_k8s.sh

# 更新系统但排除k8s
yum update -y --exclude=kubelet,kubeadm,kubectl,kubernetes-cni

# 或者使用
# yum update -y --disableexcludes=kubernetes

最佳实践

  1. 生产环境锁定版本:使用versionlock锁定关键组件版本
  2. 测试环境验证:在测试环境先验证更新
  3. 备份配置:更新前备份/etc/kubernetes目录
  4. 查看变更日志:了解更新内容
  5. 分批更新:逐个节点更新避免服务中断


辽ICP备2021007608号 | © 2026 | kaisawind

Facebook Twitter GitHub