關于 kubernetes版本升級的一些筆記

      網友投稿 968 2022-05-30

      寫在前面

      學習K8s,涉及到這一塊,這里整理一下

      博客內容涉及 k8s版本升級(kubeadm upgrade),環境是通過kubeadm安裝的,所以升級方式是否可用與生產環境未知

      官網有更詳細權威的升級文檔,小伙伴可以移步到官網學習;

      因為是多機器操作, 所以用了ansible ,閱讀本文需要知道一點ansible

      這里需要說明一點,不能跨版本升級

      生活的意義就是學著真實的活下去,生命的意義就是尋找生活的意義 -----山河已無恙

      升級K8S

      不能跨版本更新

      一、確定要升級到哪個版本

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$yum list --showduplicates kubeadm --disableexcludes=Kubernetes # 在列表中查找最新的 1.22 版本 # 它看起來應該是 1.22.x-0,其中 x 是最新的補丁版本

      現有環境

      ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$kubectl get nodes NAME STATUS ROLES AGE VERSION vms81.liruilongs.github.io NotReady control-plane,master 11m v1.21.1 vms82.liruilongs.github.io NotReady 12s v1.21.1 vms83.liruilongs.github.io NotReady 11s v1.21.1 ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$

      二、升級master

      控制節點上的升級過程應該每次處理一個節點。 首先選擇一個要先行升級的控制面節點。該節點上必須擁有 /etc/kubernetes/admin.conf 文件。

      1、執行 “kubeadm upgrade”

      # 用最新的補丁版本號替換 1.22.x-0 中的 x ┌──[root@vms81.liruilongs.github.io]-[~] └─$yum install -y kubeadm-1.22.2-0 --disableexcludes=kubernetes

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.2", GitCommit:"8b5a19147530eaac9476b0ab82980b4088bbc1b2", GitTreeState:"clean", BuildDate:"2021-09-15T21:37:34Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubeadm upgrade plan [upgrade/config] Making sure the configuration is correct: [upgrade/config] Reading configuration from the cluster... [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' [preflight] Running pre-flight checks. [upgrade] Running cluster health checks [upgrade] Fetching available versions to upgrade to [upgrade/versions] Cluster version: v1.21.1 [upgrade/versions] kubeadm version: v1.22.2 [upgrade/versions] Target version: v1.22.2 [upgrade/versions] Latest version in the v1.21 series: v1.21.5 ................

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$sudo kubeadm upgrade apply v1.22.2 ............ upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.22.2". Enjoy! [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so. ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      通過將節點標記為不可調度并騰空節點為節點作升級準備:

      # 將 替換為你要騰空的控制面節點名稱 #kubectl drain --ignore-daemonsets ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubectl drain vms81.liruilongs.github.io --ignore-daemonsets ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      關于 kubernetes版本升級的一些筆記

      2、升級 kubelet 和 kubectl

      # 用最新的補丁版本號替換 1.22.x-00 中的 x #yum install -y kubelet-1.22.x-0 kubectl-1.22.x-0 --disableexcludes=kubernetes ┌──[root@vms81.liruilongs.github.io]-[~] └─$yum install -y kubelet-1.22.2-0 kubectl-1.22.2-0 --disableexcludes=kubernetes

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$sudo systemctl daemon-reload ┌──[root@vms81.liruilongs.github.io]-[~] └─$sudo systemctl restart kubelet

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubectl uncordon vms81.liruilongs.github.io node/vms81.liruilongs.github.io uncordoned

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubectl get nodes NAME STATUS ROLES AGE VERSION vms81.liruilongs.github.io Ready control-plane,master 11d v1.22.2 vms82.liruilongs.github.io NotReady 11d v1.21.1 vms83.liruilongs.github.io Ready 11d v1.21.1 ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      三、升級工作節點Node

      工作節點上的升級過程應該一次執行一個節點,或者一次執行幾個節點, 以不影響運行工作負載所需的最小容量。

      1、升級 kubeadm

      ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible node -a "yum install -y kubeadm-1.22.2-0 --disableexcludes=kubernetes" ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible node -a "sudo kubeadm upgrade node" # 執行 "kubeadm upgrade" 對于工作節點,下面的命令會升級本地的 kubelet 配置: ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$kubectl get nodes NAME STATUS ROLES AGE VERSION vms81.liruilongs.github.io Ready control-plane,master 12d v1.22.2 vms82.liruilongs.github.io Ready 12d v1.21.1 vms83.liruilongs.github.io Ready,SchedulingDisabled 12d v1.22.2

      騰空節點,設置維護狀態

      ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$kubectl drain vms82.liruilongs.github.io --ignore-daemonsets node/vms82.liruilongs.github.io cordoned WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-ntm7v, kube-system/kube-proxy-nzm24 node/vms82.liruilongs.github.io drained

      2、升級 kubelet 和 kubectl

      ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible 192.168.26.82 -a "yum install -y kubelet-1.22.2-0 kubectl-1.22.2-0 --disableexcludes=kubernetes"

      重啟 kubelet

      ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible 192.168.26.82 -a "systemctl daemon-reload" 192.168.26.82 | CHANGED | rc=0 >> ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$ansible 192.168.26.82 -a "systemctl restart kubelet" 192.168.26.82 | CHANGED | rc=0 >>

      ┌──[root@vms81.liruilongs.github.io]-[~/ansible] └─$kubectl get nodes NAME STATUS ROLES AGE VERSION vms81.liruilongs.github.io Ready control-plane,master 13d v1.22.2 vms82.liruilongs.github.io Ready,SchedulingDisabled 13d v1.22.2 vms83.liruilongs.github.io Ready,SchedulingDisabled 13d v1.22.2

      取消對節點的保護

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubectl uncordon vms82.liruilongs.github.io node/vms82.liruilongs.github.io uncordoned ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubectl uncordon vms83.liruilongs.github.io node/vms83.liruilongs.github.io uncordoned

      升級完成,檢查一下

      ┌──[root@vms81.liruilongs.github.io]-[~] └─$kubectl get nodes NAME STATUS ROLES AGE VERSION vms81.liruilongs.github.io Ready control-plane,master 13d v1.22.2 vms82.liruilongs.github.io Ready 13d v1.22.2 vms83.liruilongs.github.io Ready 13d v1.22.2 ┌──[root@vms81.liruilongs.github.io]-[~] └─$

      kubeadm upgrade apply 做了以下工作:

      檢查你的集群是否處于可升級狀態:

      API 服務器是可訪問的

      所有節點處于 Ready 狀態

      控制面是健康的

      強制執行版本偏差策略。

      確保控制面的鏡像是可用的或可拉取到服務器上。

      如果組件配置要求版本升級,則生成替代配置與/或使用用戶提供的覆蓋版本配置。

      升級控制面組件或回滾(如果其中任何一個組件無法啟動)。

      應用新的 CoreDNS 和 kube-proxy 清單,并強制創建所有必需的 RBAC 規則。

      如果舊文件在 180 天后過期,將創建 API 服務器的新證書和密鑰文件并備份舊文件。

      kubeadm upgrade node 在其他控制平節點上執行以下操作:

      從集群中獲取 kubeadm ClusterConfiguration。

      (可選操作)備份 kube-apiserver 證書。

      升級控制平面組件的靜態 Pod 清單。

      為本節點升級 kubelet 配置

      kubeadm upgrade node 在工作節點上完成以下工作:

      從集群取回 kubeadm ClusterConfiguration。

      為本節點升級 kubelet 配置。

      Kubernetes

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:關于前端的碎碎念2-CSS裝修之盒子模型
      下一篇:直流無刷電機仿真分析——基于simulink官方例程BLDC Speed Control
      相關文章
      亚洲AV本道一区二区三区四区| 国产精品亚洲一区二区三区久久 | 亚洲av中文无码乱人伦在线r▽| 亚洲国产精品一区二区第四页| 亚洲AV日韩综合一区| 亚洲欧美国产国产一区二区三区 | 亚洲网址在线观看| 亚洲五月激情综合图片区| 亚洲成人在线电影| 亚洲嫩草影院久久精品| 亚洲视频在线观看免费| 亚洲国产香蕉碰碰人人| 亚洲一区二区中文| 亚洲男人天堂2017| 亚洲白色白色在线播放| 亚洲午夜电影一区二区三区| 亚洲国产夜色在线观看| xxx毛茸茸的亚洲| 在线亚洲午夜片AV大片| 最新亚洲人成无码网站| 亚洲国产一级在线观看| 久久久久亚洲AV成人网人人软件| 亚洲日本中文字幕一区二区三区| 2048亚洲精品国产| 亚洲国产一二三精品无码| 久久精品国产亚洲av成人| 亚洲精品自产拍在线观看动漫| 亚洲五月六月丁香激情| 亚洲冬月枫中文字幕在线看| 亚洲成a人片在线看| 亚洲乱码无人区卡1卡2卡3| 色婷婷亚洲一区二区三区| 亚洲成A人片77777国产| 国产成人高清亚洲| 亚洲av永久无码制服河南实里| 91亚洲一区二区在线观看不卡| 亚洲天堂中文字幕在线观看| 亚洲一日韩欧美中文字幕在线 | 亚洲AV无码精品色午夜在线观看| 亚洲国产精品婷婷久久| 亚洲成在人线中文字幕|