共用方式為


從 Azure CLI 升級叢集運行時間

本操作指南說明安裝必要 Azure 命令列介面和與運算子連接點互動所需延伸模組的步驟。

必要條件

  • 必須安裝 Azure 命令列介面
  • 需要 networkcloud CLI 延伸模組。 如果未安裝 networkcloud 延伸模組,可遵循此處所列的步驟進行安裝。
  • 要升級之目標叢集的 Microsoft Azure 入口網站存取權。
  • 您必須透過 az login 登入與目標叢集相同的訂用帳戶
  • 目標叢集必須處於執行中狀態、所有控制平面節點狀況良好,而且 80+% 計算節點處於執行中健全狀態。

檢查目前的運行時間版本

在升級之前確認目前的叢集運行時間版本: 如何檢查目前的叢集運行時間版本。

尋找可用的執行階段版本

透過 Azure 入口網站

若要尋找可用的可升級執行階段版本,請在 Microsoft Azure 入口網站瀏覽至目標叢集。 在叢集的概觀窗格,瀏覽至 [可用升級版本] 索引標籤。

Azure 入口網站的螢幕擷取畫面,其中顯示識別可用叢集升級的正確索引標籤。

從 [可用升級版本] 索引標籤,我們可以看到目前可用於升級的不同叢集版本。 操作員可以從列出的目標執行階段版本選取。 選取之後,繼續升級叢集。

Azure 入口網站的螢幕擷取畫面,其中顯示可用的叢集升級。

透過 Azure CLI

可透過 Azure 命令列介面擷取可用的升級:

az networkcloud cluster show --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--subscription <subscriptionID>

在輸出中,您可以找到 availableUpgradeVersions 屬性及查看 targetClusterVersion 欄位:

  "availableUpgradeVersions": [
    {
      "controlImpact": "True",
      "expectedDuration": "Upgrades may take up to 4 hours + 2 hours per rack",
      "impactDescription": "Workloads will be disrupted during rack-by-rack upgrade",
      "supportExpiryDate": "2023-07-31",
      "targetClusterVersion": "3.3.0",
      "workloadImpact": "True"
    }
  ],

如果沒有可用的叢集升級,清單會是空的。

使用叢集 updateStrategy 設定執行階段升級的計算閾值參數

下列 Azure 命令列介面命令可用來設定執行階段升級的計算閾值參數:

az networkcloud cluster update /
--name "<clusterName>" /
--resource-group "<resourceGroup>" /
--update-strategy strategy-type="Rack" threshold-type="PercentSuccess" /
threshold-value="<thresholdValue>" max-unavailable=<maxNodesOffline> /
wait-time-minutes=<waitTimeBetweenRacks> /
--subscription <subscriptionID>

必要參數:

  • strategy-type:定義更新策略。 這可以是 "Rack" (機架依據機架) OR "PauseAfterRack" (一次升級一個機架,然後等待確認,然後再繼續進行下一個機架。 預設值是 Rack。 若要使用「PauseRack」策略執行叢集執行階段升級,請遵循使用暫停機架策略來升級叢集執行階段中所述的步驟
  • threshold-type:決定應如何評估閾值,並套用策略所定義的單位。 這可以是 "PercentSuccess" OR "CountSuccess"。 預設值是 PercentSuccess
  • threshold-value:用來評估更新的數值閾值。 預設值是 80

選擇性參數:

  • max-unavailable:可以離線的背景工作角色節點數目上限,也就是一次升級一部機架。 預設值是 32767
  • wait-time-minutes:更新機架前的延遲或等待期間。 預設值是 15

下列範例適用於使用Rack by Rack 策略的客戶,其成功百分比為60%和1分鐘的暫停。

az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--update-strategy strategy-type="Rack" threshold-type="PercentSuccess" /
threshold-value=60 wait-time-minutes=1 /
--subscription <subscriptionID>

確認更新:

az networkcloud cluster show --resource-group "<resourceGroup>" /
--name "<clusterName>" /
--subscription <subscriptionID>| grep -a5 updateStrategy

      "strategyType": "Rack",
      "thresholdType": "PercentSuccess",
      "thresholdValue": 60,
      "waitTimeMinutes": 1

在此範例中,如果在機架中布建的計算節點少於 60% 無法布建(以機架為基礎),叢集部署就會失敗。 如果已成功布建 60% 以上的計算節點,叢集部署就會移至下一個計算節點機架。

下列範例適用於使用Rack by Rack 策略的客戶,其臨界值類型為每個機架10個節點且暫停1分鐘。

az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--update-strategy strategy-type="Rack" threshold-type="CountSuccess" /
threshold-value=10 wait-time-minutes=1 /
--subscription <subscriptionID>

確認更新:

az networkcloud cluster show --resource-group "<resourceGroup>" /
--name "<clusterName>" /
--subscription <subscriptionID>| grep -a5 updateStrategy

      "strategyType": "Rack",
      "thresholdType": "CountSuccess",
      "thresholdValue": 10,
      "waitTimeMinutes": 1

在此範例中,如果在機架中布建的計算節點少於10個失敗,則叢集部署會失敗。 如果已成功布建 10 個以上的計算節點,叢集部署就會移至下一個計算節點機架。

注意

update-strategy 無法在叢集運行時間升級啟動之後變更。 設定低於 100% 的臨界值時,可能會升級任何狀況不良的節點,但「叢集」狀態仍可能表示升級成功。 如需針對裸機電腦的問題進行疑難排解,請參閱針對 Azure 運算子連接點伺服器問題進行疑難排解

使用 CLI 升級叢集運行時間

若要升級執行階段,請使用下列 Azure 命令列介面命令:

az networkcloud cluster update-version --cluster-name "<clusterName>" /
--target-cluster-version "<versionNumber>" /
--resource-group "<resourceGroupName>" /
--subscription <subscriptionID>

執行階段升級是漫長的流程。 升級會先升級管理節點,然後依機架順序升級背景工作節點。 當每個機架有 80% 的背景工作節點和 100% 的管理節點成功升級時,就會將升級視為完成。 當機架中的背景工作節點正在升級時,工作負載可能會受到影響,不過所有其他機架中的工作負載不會受到影響。 建議您根據此實作設計斟酌工作負載放置方式。

根據叢集存在多少機架而定,升級所有節點需要數小時的時間。 由於升級程式的長度,應該定期檢查叢集的詳細數據狀態,以取得升級的目前狀態。 若要檢查升級的狀態,請觀察叢集的詳細狀態。 透過入口網站或 az 命令列介面可完成此檢查。

若要透過 Microsoft Azure 入口網站檢視升級狀態,請瀏覽至目標叢集資源。 叢集的 [概觀] 畫面提供詳細狀態,以及詳細的狀態訊息。

當 detailedStatus 設定為 Updating,且 detailedStatusMessage 顯示部署的進度時,表示叢集升級正在進行中。 detailedStatusMessage 中顯示的一些升級進度範例為 Waiting for control plane upgrade to complete...Waiting for nodepool "<rack-id>" to finish upgrading... 等。

當 detailedStatus 設定為 Running 且 detailedStatusMessage 顯示訊息 Cluster is up and running 時,表示叢集升級完成

Azure 入口網站的螢幕擷取畫面,其中顯示進行中的叢集升級。

若要透過 Azure 命令列介面檢視升級狀態,請使用 az networkcloud cluster show

az networkcloud cluster show --cluster-name "<clusterName>" /
--resource-group "<resourceGroupName>" /
--subscription <subscriptionID>

輸出應該是目標叢集的資訊,而且應該會出現叢集的詳細狀態和詳細狀態訊息。 如需升級進度的詳細深入解析,可以檢查每個Rack中的個別節點是否有狀態。 在BareMetal Machine角色下的參考區段中會提供檢查狀態的範例。

常見問題集

識別停滯的叢集升級

執行階段升級期間,升級可能無法推進,但詳細狀態會反映升級仍在進行中。 因為執行階段升級可能需要很長的時間才能順利完成,因此目前未指定逾時時間長度。 因此,建議您也定期檢查叢集的詳細狀態和記錄,判斷升級是否無限嘗試升級。

我們可以查看叢集的記錄、詳細訊息和詳細狀態消息,以找出 indefinitely attempting to upgrade 情況。 如果發生逾時,我們會發現叢集會持續在相同無限期地協調,而不會向前移動。 從這裡,建議您檢查叢集記錄或設定的 LAW,以查看是否有失敗,或導致無法推進的特定升級。

硬體失敗不需要重新執行升級

如果在升級期間發生硬體故障,只要符合計算和管理/控制節點的設定閾值,運行時間升級就會繼續。 機器修正或取代後,就會使用目前平台執行階段的 OS 佈建,其中包含執行階段的目標版本。

如果發生硬體失敗,且運行時間升級失敗,因為計算和控制節點不符合閾值,可能需要重新執行運行時間升級。 視失敗發生的時間和機架中個別伺服器的狀態而定。 如果機架在失敗前更新,則重新佈建節點時,將會使用升級的執行階段版本。 如果機架規格在硬體失敗前未更新為升級的執行階段版本,則會使用先前的執行階段版本佈建機器。 若要升級至新的運行時間版本,請提交新的叢集升級要求。 只會升級具有舊版運行時間的節點。 在先前升級動作中成功的主機則不會。

執行階段升級之後,叢集會顯示「失敗」佈建狀態

在執行階段升級期間,叢集會進入 Upgrading 的狀態。 如果運行時間升級失敗,叢集會進入 Failed 布建狀態。 基礎結構元件(例如存放裝置設備)可能會在升級期間造成失敗。 在某些情況下,您可能需要使用 Microsoft 支援服務來診斷失敗。