升級和復原 Kubernetes
在升級到最新版本的 Rancher 之後,下游 Kubernetes 叢集可以升級為使用最新支援的 Kubernetes 版本。
Rancher 在佈建和編輯 RKE 叢集時,會將 RKE (Rancher Kubernetes Engine) 作為函式庫呼叫。有關為 RKE 叢集設定升級策略的更多資訊,請參閱 RKE 文件。
已測試的 Kubernetes 版本
在發布新版本的 Rancher 之前,它會與最新的 Kubernetes 次要版本進行測試以確保相容性。有關每個 Rancher 版本測試了哪些 Kubernetes 版本的詳細資訊,請參閱支援維護條款。
升級的運作方式
RKE v1.1.0 改變了叢集的升級方式。
在 RKE 文件的這一節中,您將了解當您編輯或升級 RKE Kubernetes 叢集時會發生什麼。
升級的建議最佳實務
在升級叢集的 Kubernetes 版本時,我們建議您:
- 取得快照。
- 啟動 Kubernetes 升級。
- 如果升級失敗,請將叢集還原到升級前的 Kubernetes 版本。這可以透過選擇 還原 etcd 和 Kubernetes 版本選項來實現。這將在還原 etcd 快照之前將您的叢集回復到升級前的 Kubernetes 版本。
還原操作將在不處於健康或活躍狀態的叢集上運作。
升級 Kubernetes 版本
- 以下選項適用於 Rancher 啟動的 Kubernetes 叢集和已註冊的 K3s Kubernetes 叢集。
- 以下選項也適用於您已註冊的匯入 RKE2 叢集。如果您從外部雲端平台匯入叢集但未註冊它,您將無法從 Rancher 升級 Kubernetes 版本。
- 在升級 Kubernetes 之前,請備份您的叢集。
- 在左上角,點擊 ☰ > Cluster Management。
- 在 Clusters 頁面上,前往您要升級的叢集並點擊 ⋮ > Edit Config。
- 從 Kubernetes Version 下拉選單中,選擇您要用於叢集的 Kubernetes 版本。
- 點擊 Save。
**結果:**Kubernetes 開始為叢集進行升級。
復原
叢集可以還原到使用先前 Kubernetes 版本的備份。有關更多資訊,請參閱以下章節:
設定升級策略
從 RKE v1.1.0 開始,提供了額外的升級選項,讓您更細緻地控制升級過程。如果滿足某些條件和需求,這些選項可用於在叢集升級期間維持應用程式的可用性。
升級策略可以在 Rancher UI 中設定,或透過編輯 cluster.yml 來設定。透過編輯 cluster.yml 可以使用更進階的選項。
在 Rancher UI 中設定不可用工作節點的最大數量
從 Rancher UI 可以設定不可用工作節點的最大數量。在叢集升級期間,工作節點將以此大小的批次進行升級。
預設情況下,不可用工作節點的最大數量定義為所有工作節點的 10%。此數字可以設定為百分比或整數。當定義為百分比時,批次大小會向下捨入到最接近的節點,最少為一個節點。
若要變更工作節點的預設數量或百分比:
- 在左上角,點擊 ☰ > Cluster Management。
- 在 Clusters 頁面上,前往您要升級的叢集並點擊 ⋮ > Edit Config。
- 在 Upgrade Strategy 標籤中,輸入 Worker Concurrency 作為固定數字或百分比。若要取得此數字,您可以取得叢集中的節點數量並減去最大不可用節點數。
- 點擊 Save。
**結果:**叢集已更新為使用新的升級策略。
從 Rancher UI 在升級期間啟用排空節點
預設情況下,RKE 會在升級每個節點之前隔離它。在升級期間預設會停用排空。如果在叢集設定中啟用了排空,RKE 將在升級節點之前同時隔離和排空節點。
若要在叢集升級期間啟用排空每個節點:
- 在左上角,點擊 ☰ > Cluster Management。
- 在 Clusters 頁面上,前往您要啟用節點排空的叢集並點擊 ⋮ > Edit Config。
- 點擊 ⋮ > Edit。
- 在 Upgrade Strategy 標籤中,前往 Drain nodes 欄位並點擊 Yes。節點排空會分別為控制平面和工作節點設定。
- 設定 Pod 刪除方式的選項。有關每個選項的更多資訊,請參閱此章節。
- 選擇性地設定寬限期。寬限期是給予每個 Pod 清理的逾時時間,以便它們有機會優雅地退出。Pod 可能需要完成任何未完成的請求、回復交易或將狀態儲存到某些外部儲存。如果此值為負數,將使用 Pod 中指定的預設值。
- 選擇性地設定逾時,這是排空應該在放棄之前繼續等待的時間量。
- 點擊 Save。
**結果:**叢集已更新為使用新的升級策略。
有一個已知問題,即使 etcd 和 controlplane 正在被排空,Rancher UI 也不會顯示它們已被排空的狀態。
在升級期間維持應用程式的可用性
在 RKE 文件的這一節中,您將了解在升級叢集時防止應用程式停機的需求。
在 cluster.yml 中設定升級策略
透過編輯 cluster.yml 可以使用更進階的升級策略設定選項。
有關詳細資訊,請參閱 RKE 文件中的設定升級策略。該章節還包含設定升級策略的範例 cluster.yml。
疑難排解
如果節點在升級後無法啟動,rke up 命令會出錯。
如果不可用節點的數量超過設定的最大值,則不會繼續任何升級。
如果升級停止,您可能需要修復不可用的節點 或從叢集中移除它,然後才能繼續升級。
失敗的節點可能處於許多不同的狀態:
- 已關機
- 不可用
- 使用者在升級過程中排空節點,因此節點上沒有 kubelet
- 升級本身失敗
如果在升級期間達到節點的最大不可用數量,Rancher 使用者叢集將停留在更新狀態,不會繼續升級任何其他控制平面節點。它將繼續評估不可用節點的集合,以防其中一個節點變為可用。如果節點無法修復,您必須移除該節點才能繼續升級。