Share via


升級 Azure 操作員 Nexus Kubernetes 叢集

本文提供如何升級操作員 Nexus Kubernetes 叢集以取得最新功能和安全性更新的指示。 Kubernetes 叢集生命週期的一部分牽涉到定期升級至最新的 Kubernetes 版本。 請務必套用最新的安全性版本,或升級以取得最新的功能。 本文說明如何檢查、設定及套用升級至 Kubernetes 叢集。

限制

  • 叢集升級程式是向外延展方法,這表示至少會新增一個額外的節點(或最大激增 中所 設定的節點數目)。 如果容量不足,升級將無法成功。
  • 當新的 Kubernetes 版本可供使用時,租使用者叢集將不會進行自動升級。 當叢集中的所有網路功能都準備好支援新的 Kubernetes 版本時,使用者應該起始升級。 如需詳細資訊,請參閱 升級叢集
  • 操作員 Nexus 提供全叢集升級,確保所有節點集區的一致性。 不支援升級單一節點集區。 此外,當有新版本可用時,節點映射會升級為叢集升級的一部分。
  • 對代理程式節點所做的自訂會在叢集升級期間遺失。 建議您將這些自訂放在 中 DaemonSet ,而不是手動變更節點組態,以便在升級後保留它們。
  • 在叢集升級程式中,對核心附加元件組態所做的修改會還原至預設附加元件組態。 避免自訂附加元件組態(例如 Calico 等),以避免潛在的升級失敗。 如果附加元件組態還原發生問題,可能會導致升級失敗。
  • 當您升級操作員 Nexus Kubernetes 叢集時,無法略過 Kubernetes 次要版本。 您必須依主要版本號碼循序執行所有升級。 例如,允許在 1.14.x - > 1.15.x 1.15.x - > 1.16.x 之間 升級,但 不允許 1.14.x - > 1.16.x 如果您的版本落後于多個主要版本,您應該執行多個循序升級。
  • 叢集建立期間必須設定最大激增值。 建立叢集之後,您無法變更最大激增值。 如需詳細資訊,請參閱 upgradeSettings 建立 Azure 操作員 Nexus Kubernetes 叢集中

必要條件

  • 部署在 Azure 訂用帳戶中資源群組中的 Azure 操作員 Nexus Kubernetes 叢集。
  • 如果您使用 Azure CLI,本文會要求您執行最新的 Azure CLI 版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI
  • 瞭解版本套件組合概念。 如需詳細資訊,請參閱 Nexus Kubernetes 版本套件組合

檢查是否有可用的升級

使用下列步驟檢查叢集可用的 Kubernetes 版本:

使用 Azure CLI

下列 Azure CLI 命令會傳回叢集的可用升級:

az networkcloud kubernetescluster show --name <NexusK8sClusterName> --resource-group <ResourceGroup> --output json --query availableUpgrades

範例輸出:

[
  {
    "availabilityLifecycle": "GenerallyAvailable",
    "version": "v1.25.4-4"
  },
  {
    "availabilityLifecycle": "GenerallyAvailable",
    "version": "v1.25.6-1"
  },
  {
    "availabilityLifecycle": "GenerallyAvailable",
    "version": "v1.26.3-1"
  }
]

使用 Azure 入口網站

  1. 登入 Azure 入口網站
  2. 流覽至操作員 Nexus Kubernetes 叢集。
  3. 在 [概觀] 底 下,選取 [可用的升級] 索引標籤

Screenshot of available upgrades.

選擇要升級至的版本

可用的升級輸出表示有多個版本可供選擇進行升級。 在此特定案例中,目前的叢集正在版本上 v1.25.4-3. 運作。因此,可用的升級選項包括 v1.25.4-4 和最新的修補程式版本 v1.25.6-1. 此外,也提供新的次要版本。

您可以彈性地升級至任何可用的版本。 不過,建議的動作是執行最新可用 major-minor-patch-versionbundle 版本的升級。

注意

版本的輸入格式為 major.minor.patchmajor.minor.patch-versionbundle 。 版本輸入必須是其中一個可用的升級版本。 例如,如果叢集的目前版本是 1.1.1-1 ,則有效的版本輸入為 1.1.1-21.1.1-x 。 雖然 1.1.1 是有效的格式,但不會觸發任何更新,因為目前的版本已經 1.1.1 是 。 若要起始更新,您可以使用版本套件組合來指定完整的版本,例如 1.1.1-2 。 不過,和 1.2.x 是有效的輸入, 1.1.2 而且會使用 適用于 1.1.21.2.x 的最新版本套件組合。

將叢集升級

在叢集升級程式期間,Operator Nexus 會執行下列作業:

  • 將具有指定 Kubernetes 版本的新控制平面節點新增至叢集。
  • 新增節點之後,請封鎖並清空其中一個舊的控制平面節點,確保其上執行的工作負載會正常移至其他狀況良好的控制平面節點。
  • 清空舊的控制平面節點之後,即會移除它,並將新的控制平面節點新增至叢集。
  • 此程式會重複執行,直到叢集中的所有控制平面節點都升級為止。
  • 針對叢集中的每個代理程式組件區,使用指定的 Kubernetes 版本,新增新的背景工作節點(或如最大激增 中所 設定的節點數目一樣多)。 多個代理程式組件區會同時升級。
  • 封鎖並清空 其中一個舊的背景工作節點,以將執行中應用程式的中斷降到最低。 如果您使用最大激增,它會 在指定的緩衝區節點數目的同時,封鎖和清空 多個背景工作節點。
  • 清空舊的背景工作節點之後,就會移除該節點,並將具有新 Kubernetes 版本的新背景工作節點新增至叢集(或最大激增 中所 設定的節點數目)
  • 此程式會重複執行,直到叢集中的所有背景工作節點都升級為止。

重要

請確定任何 PodDisruptionBudgets PDB ) 允許一次移動至少 一個 Pod 複本,否則清空/收回作業將會失敗。 如果清空作業失敗,升級作業也會失敗,以確保應用程式不會中斷。 請更正導致作業停止的原因(也就是不正確的 PDB、缺少配額等),然後重新嘗試作業。

  1. 使用 networkcloud kubernetescluster update 命令升級叢集。
az networkcloud kubernetescluster update --name myNexusK8sCluster --resource-group myResourceGroup --kubernetes-version v1.26.3
  1. 使用 show 命令確認升級成功。
az networkcloud kubernetescluster show --name myNexusK8sCluster --resource-group myResourceGroup --output json --query kubernetesVersion

下列範例輸出顯示叢集現在會執行 v1.26.3

"v1.26.3"
  1. 確定叢集狀況良好。
az networkcloud kubernetescluster show --name myNexusK8sCluster --resource-group myResourceGroup --output table

下列範例輸出顯示叢集狀況良好:

Name                 ResourceGroup          ProvisioningState    DetailedStatus    DetailedStatusMessage             Location
------------------   ---------------------  -------------------  ----------------  --------------------------------  --------------
myNexusK8sCluster    myResourceGroup        Succeeded            Available         Cluster is operational and ready  southcentralus

自訂節點激增升級

根據預設,操作員 Nexus 會設定升級以激增一個額外的背景工作節點。 最大激增設定的預設值可讓操作員 Nexus 在現有應用程式的警戒線/清空之前建立額外的節點來取代舊版節點,將工作負載中斷降到最低。 每個節點集區可以自訂最大激增值,以在升級速度和升級中斷之間進行取捨。 當您增加最大激增值時,升級程式會更快完成。 如果您為最大激增設定較大的值,可能會在升級程式期間遇到中斷。

例如,最大激增值為 100% 可提供最快的升級程式(使節點計數增加一倍),但也會導致節點集區中的所有節點同時清空。 您可能想要使用較高的值,例如用於測試環境。 針對生產節點集區,我們建議使用 33% 的max_surge設定。

API 同時接受整數值和最大激增的百分比值。 整數,例如 5 表示要激增的五個額外節點。 值為 50% 表示集區中目前節點計數的一半激增值。 最大激增百分比值至少可以是 1%,最大值為 100%。 百分比值會四捨五入到最接近的節點計數。 如果最大激增值高於要升級的必要節點數目,則會針對最大激增值使用要升級的節點數目。

在升級期間,最大激增值可以是最小值 1,最大值等於節點集區中的節點數目。 您可以設定較大的值,但用於最大激增的節點數目上限不會高於升級時集區中的節點數目。

重要

標準 Kubernetes 工作負載會在從要拆毀的節點中清空時,以原生方式迴圈到新節點。 請記住,操作員 Nexus Kubernetes 服務無法對非標準 Kubernetes 行為做出工作負載承諾。

下一步