Kubernetes版本升级操作指南

首页 编程分享 EXPERIENCE 正文

转贴的文章 转载 编程分享 2022-02-20 23:44:03

简介 首先,让我们定义一下 Kubernetes 中 hard-way 的概念:Kubernetes 中的困难方式是为了学习和应用每一步,但是你要...


首先,让我们定义一下 Kubernetes 中 hard-way 的概念:Kubernetes 中的困难方式是为了学习和应用每一步,但是你要了解该步骤背后的内容。因此,您每点击一个命令都会发生神奇的事情,最后通过一个很长的路径和命令才能升级您的集群。第一次看起来可能很难,但这将是您之后升级的经验积累,因为您将熟悉每个 Kubernetes 升级组件,因为您将使用大量命令工具,这可以帮助您进行故障排除并为您提供更多的集群可控性。

现在让我们跳到一个演示中,用我们的双手来操作命令行。我们将把一个集群从1.22版升级到1.23版。

前提条件

  • 确保备份所有重要组件,例如存储在数据库中的应用状态。Kubernetes 升级不涉及正常的工作负载,只涉及与 Kubernetes 相关的组件,但备份始终是最佳实践。

  • 必须禁用Swap交换

步骤

master节点

  1. 清空主节点

驱逐/删除主节点的所有 Pod(镜像 Pod 除外)(不能通过 API 服务器删除),以便能够执行升级。如果有 daemon set-managed pods,drain 不会在没有 --ignore-daemonsets 的情况下继续进行,因为这些 pods 将立即被 daemon set 控制器替换,它会忽略不可调度的标记。

Idkubectl drain master --ignore-daemonsets
node/master already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-proxy-lfplf, kube-system/weave-net-fv7sn
evicting pod kube-system/coredns-64897985d-pl2v9
evicting pod kube-system/coredns-64897985d-65g5p
pod/coredns-64897985d-65g5p evicted
pod/coredns-64897985d-pl2v9 evicted
node/master drained

Draining 成功后,您可以检查节点的状态以确保它是SchedulingDisabled,这意味着该节点上不能调度任何 Pod。

Idkubectl get nodes 
NAME STATUS ROLES VERSION 
master Ready, SchedulingDisabled control-plane,master v1.22.2 
worker Ready <none> v1.22.2
  1. 更新系统中的包管理器,根据您的操作系统,它可能会有所不同。

Idapt-get update
  1. 在包管理器中搜索可用的 kubeadm 包,并使用 grep 过滤结果以获得您需要的版本。在我们的例子中是 1.23 版本。

Idapt-cache show kubeadm | grep 1.23

输出应类似于以下内容:

Version: 1.23.1–00
Filename: pool/kubeadm_1.23.1–00_amd64_6bc970cf9bf5349ba18526f77c6ac16caf2a52b6a7b0e40753541ebef52ad99f.deb
Version: 1.23.0–00
Filename: pool/kubeadm_1.23.0–00_amd64_36016a07eb5c2bfae656cfee1b3848930757d201b474fea1cce1ecd507b94f0b.deb
  1. 保留 kubectl 和 kubelet包,防止它们被自动安装、升级或删除。这是一个预防措施。

Idapt-mark hold kubectl kubelet
  1. 取消保留 kubeadm 包,升级后再次 hold。

Idapt-mark unhold kubeadm
Idapt-get install kubeadm=1.23.1–00
Idapt-mark hold kubeadm
  1. 检查 kubeadm版本以确保它已升级。

Idkubeadm version

kubeadm 版本

  1. 查看kubeadm升级计划,看看还有哪些组件需要升级。

Idkubeadm upgrade plan

kubeadm 升级计划

  1. 应用计划,你应该可以看到升级成功的消息

Idkubeadm upgrade apply v1.23.1

  1. 取消保留 kubectl 和 kubelet包,升级它们然后再次持有它们。

请注意,如果您要复制此内容,您可能需要删除“-”并在终端中再次输入,因为它可能被视为拼写错误。

Idapt-mark unhold kubelet kubectl 
Idapt-get install kubelet=1.23.1-00 kubectl=1.23.1-00 
Idapt-mark hold kubelet kubectl
  1. 重新启动 kubelet 并检查是否正常运行。

Idsystemctl restart kubelet
Idsystemctl status kubelet
  1. 运行 kubeadm upgrade plan check以确保一切都已升级。

Idkubeadm upgrade plan

kubeadm 升级检查

  1. 检查节点状态和主节点的新版本。

Idkubectl get nodes
NAME       STATUS                    ROLES                   VERSION
master     Ready,SchedulingDisabled  control-plane,master    v1.23.1
worker     Ready                     <none>                  v1.22.2
  1. 解封主节点,使其再次可调度

Idkubectl uncordon master
Idkubectl get nodes
NAME       STATUS    ROLES                  VERSION
master     Ready     control-plane,master   v1.23.1
worker     Ready     <none>                 v1.22.2

这里我们完成了主节点,让我们移动到工作节点

worker 节点

我们将重复使用以下相同的命令

  1. 清空主节点

您可能需要使用“force”参数来强制驱逐一些 pod。

Idkubectl drain worker --ignore-daemonsets --force
node/cks-worker drained
  1. 更新包管理器。取消保留,安装 kubeadm。

Idapt-get update
Idapt-mark unhold kubeadm
Idapt-get install kubeadm=1.23.1-00
Idapt-mark hold kubeadm
  1. 取消保留,安装,然后保留 kubectl 和 kubeadm。

Idapt-mark unhold kubelet kubectl 
Idapt-get install kubelet=1.23.1-00 kubectl=1.23.1-00 
Idapt-mark hold kubelet kubectl
  1. 重启kubelet进程并检查其状态

Idsystemctl restart kubelet
Idsystemctl status kubelet
  1. 检查节点状态

Idkubectl get nodes
NAME       STATUS                   ROLES                 VERSION
master     Ready                    control-plane,master  v1.23.1
worker     Ready,SchedulingDisabled <none>                v1.23.1
  1. 解封worker节点,使其再次可调度

Idkubectl uncordon worker
Idkubectl get nodes 
NAME STATUS ROLES VERSION 
master      Ready      control-plane,master    v1.23.1
worker      Ready      <none>                  v1.23.1

至此升级成功!!

结论

我们将 Kubernetes 集群版本从 1.22.2 升级到 1.23.1 Kubeadm 包升级到 1.23.1 版本,然后使用 kubeadm 升级集群的其他组件。Kubectl 和 Kubelet 升级到同一个版本 1.23.1 一般来说,基本步骤就是清空节点,取消持有安装包,升级它然后再次持有它,最后解封节点。

转载链接:https://my.oschina.net/u/4518070/blog/5455536


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云