<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] 整體思路: - 升級master節點 - 第一個控制節點 - 其他master - 升級node節點 - 驗證集群狀態 # 升級master節點 ## 第一個控制節點 0. 摘除流量 這里使用的haproxy做流量負載,所以該文章只演示haproxy的移除負載負載 前提條件: - HAproxy 啟動監控統計頁面 ![](https://img.kancloud.cn/1a/36/1a36ef5a2c1f66b6ae817af6abb38782_1920x700.png) >[danger] 注意:訪問的地址必須是 負載IP(VIP)地址。將 `status` 參數從 `READY` 改成 `MAINT` 1. 升級kubeadm ```shell yum upgrade -y kubeadm-1.20.15-0 --disableexcludes=kubernetes ``` > 通過 `yum list --showduplicates kubeadm` 命令,確認集群版本。 > **注意**: 升級 `kubeadm` 低于 1.20.x 版本,會有依賴提示安裝 `kubelet` 和 `kubectl` 最新版本。需要特別留意再輸入 y 繼續安裝 2. 驗證 kubeadm 版本正確 ```shell $ kubeadm version -o short v1.19.16 ``` 3. 驗證升級計劃 ```shell kubeadm upgrade plan ``` > **說明**: > 1. 此命令檢查你的集群是否可被升級,并取回你要升級的目標版本。 命令也會顯示一個包含組件配置版本狀態的表格。 > 2. 如果 `kubeadm upgrade plan` 給出任何需要手動升級的組件配置, 用戶必須通過 `--config` 命令行標志向 `kubeadm upgrade apply` 命令提供替代的配置文件。 如果不這樣做,`kubeadm upgrade apply` 會出錯并退出,不再執行升級操作。 4. 升級集群 ```shell kubeadm upgrade apply v1.19.16 ``` 5. [可選]升級 CNI 驅動插件 這里使用calico網絡插件。 - 第一步:確認當前使用calico的版本。 - 第二步:查看 [官網](https://projectcalico.docs.tigera.io/archive/v3.18/getting-started/kubernetes/requirements#kubernetes-requirements) 是否支持這個版本的kubernetes集群版本。 >[info] 如果官網反饋是沒有測試過的話,建議升級calico插件。 6. 設置第一個控制面節點維護狀態 ```shell kubectl drain <node-to-drain> --ignore-daemonsets ``` 7. 升級 kubelet 服務 ```shell yum upgrade kubectl-1.20.15-0 kubelet-1.20.15-0 --disableexcludes=kubernetes systemctl daemon-reload systemctl restart kubelet ``` 8. 取消第一個控制面節點維護狀態 ```shell kubectl uncordon <node-to-uncordon> ``` 9. 將流量切換到第一個控制節點 1. 將第一個控制節點 status 從 `MAINT` 改成 `READY` 狀態 2. 將其他控制節點 `status` 參數從 `READY` 改成 `MAINT` 10. [可選]運行測試容器到第一個控制面節點 ```shell # 創建deployment kubectl create deployment alpine --image=alpine:3.16 -- sleep 3600 # 容忍任何污點 以及 調度到指定節點 kubectl patch deployment alpine -p '{"spec": {"template": {"spec": {"tolerations": [{"operator": "Exists"}], "nodeSelector": {"kubernetes.io/hostname": "master03"}}}}}' # 查看pod運行情況 $ kubectl get pod -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES alpine-5f7998d889-8kzpg 1/1 Running 0 9s 10.244.235.11 master03 <none> <none> # 測試與pod的連通性 $ kubectl -n kube-system get pod -owide -l k8s-app=kube-dns NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES coredns-7f89b7bc75-hw4pt 1/1 Running 0 158m 10.244.241.68 master01 <none> <none> coredns-7f89b7bc75-pz9zb 1/1 Running 0 158m 10.244.59.198 master02 <none> <none> $ kubectl exec -it alpine-5f7998d889-8kzpg -- ping -c4 10.244.241.68 PING 10.244.241.68 (10.244.241.68): 56 data bytes 64 bytes from 10.244.241.68: seq=0 ttl=62 time=0.550 ms 64 bytes from 10.244.241.68: seq=1 ttl=62 time=0.485 ms 64 bytes from 10.244.241.68: seq=2 ttl=62 time=0.520 ms 64 bytes from 10.244.241.68: seq=3 ttl=62 time=0.589 ms --- 10.244.241.68 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.485/0.536/0.589 ms # 測試service連通性 $ kubectl exec -it alpine-5f7998d889-8kzpg -- wget --no-check-certificate -q -O - https://kubernetes:443/version { "major": "1", "minor": "20", "gitVersion": "v1.20.15", "gitCommit": "8f1e5bf0b9729a899b8df86249b56e2c74aebc55", "gitTreeState": "clean", "buildDate": "2022-01-19T17:23:01Z", "goVersion": "go1.15.15", "compiler": "gc", "platform": "linux/amd64" } # 清理deployment $ kubectl delete deploy alpine ``` > 如果容器正常運行且與其他 `podIP` 和 `serverIP` 可以正常通訊即可 ## 其它控制面節點 1. 升級控制面組件 及 kubelet配置文件 ```shell yum upgrade kubeadm-1.20.15-0 --disableexcludes=kubernetes kubeadm upgrade node ``` 2. 升級 kubelet 服務 ```shell kubectl drain <node-to-drain> --ignore-daemonsets yum upgrade kubectl-1.20.15-0 kubelet-1.20.15-0 --disableexcludes=kubernetes systemctl daemon-reload systemctl restart kubelet kubectl uncordon <node-to-uncordon> ``` 3. 流量恢復其他節點 將其他控制節點 status 從 `MAINT` 改成 `READY` 狀態 # 升級node節點 1. 修改配置kubelet配置文件以及更新證書 ```shell yum upgrade kubeadm-1.20.15-0 --disableexcludes=kubernetes kubeadm upgrade node ``` 2. 升級 kubelet 服務 ```shell kubectl drain <node-to-drain> --ignore-daemonsets yum upgrade kubectl-1.20.15-0 kubelet-1.20.15-0 --disableexcludes=kubernetes systemctl daemon-reload systemctl restart kubelet kubectl uncordon <node-to-uncordon> ``` # 驗證集群狀態 ```shell $ kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready control-plane,master 2d v1.20.15 master02 Ready control-plane,master 2d v1.20.15 master03 Ready control-plane,master 2d v1.20.15 ``` # 參考文檔 kubeadm升級集群:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看