<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Kubernetes 版本升級之路

          共 3916字,需瀏覽 8分鐘

           ·

          2022-03-15 22:14

          Kubernetes 升級之路

          首先,讓我們定義一下 Kubernetes 中 hard-way 的概念:Kubernetes 中的困難方式是為了學(xué)習(xí)和應(yīng)用每一步,但是你要了解該步驟背后的內(nèi)容。因此,您每點擊一個命令都會發(fā)生神奇的事情,最后通過一個很長的路徑和命令才能升級您的集群。第一次看起來可能很難,但這將是您之后升級的經(jīng)驗積累,因為您將熟悉每個 Kubernetes 升級組件,因為您將使用大量命令工具,這可以幫助您進行故障排除并為您提供更多的集群可控性。

          現(xiàn)在讓我們跳到一個演示中,用我們的雙手來操作命令行。我們將把一個集群從1.22版升級到1.23版。

          前提條件

          • 確保備份所有重要組件,例如存儲在數(shù)據(jù)庫中的應(yīng)用狀態(tài)。Kubernetes 升級不涉及正常的工作負載,只涉及與 Kubernetes 相關(guān)的組件,但備份始終是最佳實踐。
          • 必須禁用Swap交換

          步驟

          master節(jié)點

          1. 清空主節(jié)點

          驅(qū)逐/刪除主節(jié)點的所有 Pod(鏡像 Pod 除外)(不能通過 API 服務(wù)器刪除),以便能夠執(zhí)行升級。如果有?daemon set-managed pods,drain 不會在沒有?--ignore-daemonsets?的情況下繼續(xù)進行,因為這些 pods 將立即被 daemon set 控制器替換,它會忽略不可調(diào)度的標記。

          #kubectl?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 成功后,您可以檢查節(jié)點的狀態(tài)以確保它是SchedulingDisabled,這意味著該節(jié)點上不能調(diào)度任何 Pod。

          #kubectl?get?nodes?
          NAME?STATUS?ROLES?VERSION?
          master?Ready,?SchedulingDisabled?control-plane,master?v1.22.2?
          worker?Ready??v1.22.2
          1. 更新系統(tǒng)中的包管理器,根據(jù)您的操作系統(tǒng),它可能會有所不同。
          #apt-get?update
          1. 在包管理器中搜索可用的 kubeadm 包,并使用 grep 過濾結(jié)果以獲得您需要的版本。在我們的例子中是 1.23 版本。
          #apt-cache?show?kubeadm?|?grep?1.23

          輸出應(yīng)類似于以下內(nèi)容:

          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包,防止它們被自動安裝、升級或刪除。這是一個預(yù)防措施。
          #apt-mark?hold?kubectl?kubelet
          1. 取消保留 kubeadm 包,升級后再次 hold。
          #apt-mark?unhold?kubeadm
          #apt-get?install?kubeadm=1.23.1–00
          #apt-mark?hold?kubeadm
          1. 檢查 kubeadm版本以確保它已升級。
          #kubeadm?version
          kubeadm 版本
          1. 查看kubeadm升級計劃,看看還有哪些組件需要升級。
          #kubeadm?upgrade?plan
          kubeadm 升級計劃
          1. 應(yīng)用計劃,你應(yīng)該可以看到升級成功的消息
          #kubeadm?upgrade?apply?v1.23.1
          1. 取消保留 kubectl 和 kubelet包,升級它們?nèi)缓笤俅纬钟兴鼈儭?/section>

          請注意,如果您要復(fù)制此內(nèi)容,您可能需要刪除“-”并在終端中再次輸入,因為它可能被視為拼寫錯誤。

          #apt-mark?unhold?kubelet?kubectl?
          #apt-get?install?kubelet=1.23.1-00?kubectl=1.23.1-00?
          #apt-mark?hold?kubelet?kubectl
          1. 重新啟動 kubelet 并檢查是否正常運行。
          #systemctl?restart?kubelet
          #systemctl?status?kubelet
          1. 運行 kubeadm upgrade plan check以確保一切都已升級。
          #kubeadm?upgrade?plan
          kubeadm 升級檢查
          1. 檢查節(jié)點狀態(tài)和主節(jié)點的新版本。
          #kubectl?get?nodes
          NAME???????STATUS????????????????????ROLES???????????????????VERSION
          master?????Ready,SchedulingDisabled??control-plane,master????v1.23.1
          worker?????Ready???????????????????????????????????????v1.22.2
          1. 解封主節(jié)點,使其再次可調(diào)度
          #kubectl?uncordon?master
          #kubectl?get?nodes
          NAME???????STATUS????ROLES??????????????????VERSION
          master?????Ready?????control-plane,master???v1.23.1
          worker?????Ready??????????????????????v1.22.2

          這里我們完成了主節(jié)點,讓我們移動到工作節(jié)點

          worker 節(jié)點

          我們將重復(fù)使用以下相同的命令

          1. 清空主節(jié)點

          您可能需要使用“force”參數(shù)來強制驅(qū)逐一些 pod。

          #kubectl?drain?worker?--ignore-daemonsets?--force
          node/cks-worker?drained
          1. 更新包管理器。取消保留,安裝 kubeadm。
          #apt-get?update
          #apt-mark?unhold?kubeadm
          #apt-get?install?kubeadm=1.23.1-00
          #apt-mark?hold?kubeadm
          1. 取消保留,安裝,然后保留 kubectl 和 kubeadm。
          #apt-mark?unhold?kubelet?kubectl?
          #apt-get?install?kubelet=1.23.1-00?kubectl=1.23.1-00?
          #apt-mark?hold?kubelet?kubectl
          1. 重啟kubelet進程并檢查其狀態(tài)
          #systemctl?restart?kubelet
          #systemctl?status?kubelet
          1. 檢查節(jié)點狀態(tài)
          #kubectl?get?nodes
          NAME???????STATUS???????????????????ROLES?????????????????VERSION
          master?????Ready????????????????????control-plane,master??v1.23.1
          worker?????Ready,SchedulingDisabled?????????????????v1.23.1
          1. 解封worker節(jié)點,使其再次可調(diào)度
          #kubectl?uncordon?worker
          #kubectl?get?nodes?
          NAME?STATUS?ROLES?VERSION?
          master??????Ready??????control-plane,master????v1.23.1
          worker??????Ready????????????????????????v1.23.1

          至此升級成功!!

          結(jié)論

          我們將 Kubernetes 集群版本從 1.22.2 升級到 1.23.1 Kubeadm 包升級到 1.23.1 版本,然后使用 kubeadm 升級集群的其他組件。Kubectl 和 Kubelet 升級到同一個版本 1.23.1 一般來說,基本步驟就是清空節(jié)點,取消持有安裝包,升級它然后再次持有它,最后解封節(jié)點。

          原文鏈接:https://blog.devgenius.io/kubernetes-upgrade-the-hard-way-be2c75bb9b8f

          文章轉(zhuǎn)載:性能與架構(gòu)
          (版權(quán)歸原作者所有,侵刪)

          Linux學(xué)習(xí)指南

          有收獲,點個在看?

          瀏覽 31
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  伊人婷婷五月天激情 | 激情一二三| 亚洲日韩在线看 | 豆花视频成人版WWW18 | 国产精品无套久久久久 |