提升你的云技能:深入了解CKA认证之k8s升级秘籍!

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 PTS,5000VUM额度
简介: 提升你的云技能:深入了解CKA认证之k8s升级秘籍!

预备知识点

kubernetes版本升级迭代非常快,每三个月更新一个版本,很多新的功能在新版本中快速迭代,为了与社区版本功能保持一致,升级kubernetes集群,社区已通过kubeadm工具统一升级集群,升级步骤简单易行。

升级工作的基本流程如下:

  1. 升级主控制平面节点
  2. 升级其他控制平面节点
  3. 升级工作节点

版本升级通常分为两类:

  1. 小版本升级

小版本升级如下1.14.1升级到1.14.2,小版本升级可以跨版本升级,如1.14.1升级到1.14.3.

  1. 跨版本升级

跨版本升级是指大版本升级,如1.14.x升级到1.15.x。

升级注意,不能跨版本升级

  • 1.19.x → 1.20.y——是可以的(其中y > x)
  • 1.19.x → 1.21.y——不可以【跨段了】(其中y > x)
  • 1.21.x→ 1.21.y——也可以(只要其中y > x)

所以,如果需要跨大版本升级,必须多次逐步升级

升级步骤

确定升级到哪个版本

使用操作系统的包管理器找到最新的补丁版本

# 在列表中查找最新的 1.29 版本
# 它看起来应该是 1.29.x-*,其中 x 是最新的补丁版本
sudo apt update
sudo apt-cache madison kubeadm

把升级节点设置为维护状态

将节点标记为不可调度并驱逐所有负载,准备节点的维护:

# 将 <node-to-drain> 替换为你要腾空的控制面节点名称
kubectl drain <node-to-drain> --ignore-daemonsets

<node-to-drain>为节点名称,可以通过kubectl get node查看

执行上述的命令后输出结果如下图:

升级控制平面节点

控制面节点上的升级过程应该每次处理一个节点。 首先选择一个要先行升级的控制面节点。该节点上必须拥有/etc/kubernetes/admin.conf文件。

  1. 升级kubeadm
# 用最新的补丁版本号替换 1.29.x-* 中的 x
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.29.x-*' && \
sudo apt-mark hold kubeadm

以下从1.29.0升级到1.29.2为例,执行上述的命令输出的结果如下图:

  1. 验证下载操作正常,并且 kubeadm 版本正确:
kubeadm version

执行上述的命令输出的结果如下图:

  1. 验证升级计划:
sudo kubeadm upgrade plan

执行上述的命令输出的结果如下

  1. 选择要升级到的目标版本,运行合适的命令。例如:
sudo kubeadm upgrade apply v1.29.2

当执行上述命令返回如下的结果,证明升级成功

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

升级kubelet和kubectl

在升级kubelet和kubectl时,需求将节点标记为不可调度并驱逐所有负载

# 用最新的补丁版本替换 1.29.x-* 中的 x
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='1.29.2-*' kubectl='1.29.2-*' && \
sudo apt-mark hold kubelet kubectl

执行上述命令后输出结果如下图:

升级完成后,执行如下命令重启kubelet服务。

sudo systemctl daemon-reload
sudo systemctl restart kubelet

通过下图的结果,可以看到控制节点的版本已经从v1.29.0升级到v1.29.2。

解除节点保护

当前节点还是在维护状态,不要忘记通过执行kubectl uncordon controlplane解除节点的保护。到此,整个控制平面的升级已经完成了。

CKA真题

设置配置环境:

[candidate@node-1] $ kubectl config use-context mk8s

Task

现有的 Kubernetes 集群正在运行版本 1.29.0。仅将 master 节点上的所有 Kubernetes 控制平面和节点组件升级到版本 1.29.1。

确保在升级之前 drain master 节点,并在升级后 uncordon master 节点。

可以使用以下命令,通过 ssh 连接到 master 节点:

ssh master01

可以使用以下命令,在该 master 节点上获取更高权限:

sudo -i

另外,在主节点上升级 kubelet 和 kubectl。

请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。

https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#changing-the-package-repository

做题解答

  1. 考试时执行,切换集群。
kubectl config use-context mk8s
  1. 查看节点信息
controlplane $ kubectl get node
NAME           STATUS   ROLES           AGE   VERSION
controlplane   Ready    control-plane   23d   v1.29.0
node01         Ready    <none>          23d   v1.29.0
  1. 将升级节点标记为不可调度并驱逐所有负载,准备升级升级:
controlplane $ kubectl cordon controlplane
node/controlplane cordoned
controlplane $ kubectl drain controlplane --ignore-daemonsets
node/controlplane already cordoned
Warning: ignoring DaemonSet-managed Pods: kube-system/canal-kn5fq, kube-system/kube-proxy-f8kcp
evicting pod local-path-storage/local-path-provisioner-5d854bc5c4-tszl5
evicting pod kube-system/calico-kube-controllers-9d57d8f49-wlth4
pod/calico-kube-controllers-9d57d8f49-wlth4 evicted
pod/local-path-provisioner-5d854bc5c4-tszl5 evicted
node/controlplane drained
  1. 升级控制平面
# 在考试环境中 ssh 到 master 节点,并切换到 root 下
# ssh master01
# sudo -i
controlplane $ apt-get update
# 找到题目要求升级到的指定版本
controlplane $ apt-cache madison kubeadm | grep 1.29.1
   kubeadm | 1.29.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.29/deb  Packages
controlplane $ apt-get install kubeadm=1.29.1-1.1
# 验证下载操作正常,并且 kubeadm 版本正确:
controlplane $ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"29", GitVersion:"v1.29.1", GitCommit:"bc401b91f2782410b3fb3f9acf43a995c4de90d2", GitTreeState:"clean", BuildDate:"2024-01-17T15:49:02Z", GoVersion:"go1.21.6", Compiler:"gc", Platform:"linux/amd64"}
#验证升级计划
controlplane $ kubeadm upgrade plan
#排除etcd,升级其他的
controlplane $ kubeadm upgrade apply v1.29.1 --etcd-upgrade=false
#升级 kubelet 和 kubectl
controlplane $ apt-get install kubelet=1.29.1-1.1 kubectl=1.29.1-1.1
controlplane $ systemctl restart kubelet.service
# 考试环境中退出 root,退回到 student@master01
# 解除节点的保护
controlplane $  kubectl uncordon controlplane
# 检查 master1 是否为 Ready
controlplane $ kubectl get node
NAME           STATUS   ROLES           AGE   VERSION
controlplane   Ready    control-plane   23d   v1.29.1
node01         Ready    <none>          23d   v1.29.0
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
Kubernetes Cloud Native 网络安全
云原生|kubernetes|CKA模拟测试-2022(1---10题)(一)
云原生|kubernetes|CKA模拟测试-2022(1---10题)(一)
148 0
|
2月前
|
Kubernetes Cloud Native 调度
云原生|kubernetes|CKA真题解析-------(1-5题)
云原生|kubernetes|CKA真题解析-------(1-5题)
551 0
|
29天前
|
Kubernetes 算法 API
K8S 集群认证管理
【6月更文挑战第22天】Kubernetes API Server通过REST API管理集群资源,关键在于客户端身份认证和授权。
|
2月前
|
Kubernetes 应用服务中间件 nginx
提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
47 0
|
2月前
|
Kubernetes 应用服务中间件 数据安全/隐私保护
k8s 网络策略揭秘:CKA认证必备的网络知识全解析
k8s 网络策略揭秘:CKA认证必备的网络知识全解析
33 0
|
2月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|CKA备考和一些应试小技巧
云原生|kubernetes|CKA备考和一些应试小技巧
140 0
|
2月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|CKA真题解析-------(11-17题)
云原生|kubernetes|CKA真题解析-------(11-17题)
120 0
|
2月前
|
Kubernetes Cloud Native 固态存储
云原生|kubernetes|CKA真题解析-------(6-10题)
云原生|kubernetes|CKA真题解析-------(6-10题)
131 0
|
2月前
|
Kubernetes Cloud Native 安全
云原生|kubernetes|kubernetes集群升级+证书更新(Ubuntu-18.04+kubeadm)
云原生|kubernetes|kubernetes集群升级+证书更新(Ubuntu-18.04+kubeadm)
302 0
|
2月前
|
Kubernetes API 网络架构
k8s学习-CKS真题-启用API Server认证,禁止匿名访问
k8s学习-CKS真题-启用API Server认证,禁止匿名访问
126 0

相关产品

  • 容器服务Kubernetes版