從 Azure CLI 升級叢集運行時間
本操作指南說明安裝必要 Azure 命令列介面和與運算子連接點互動所需延伸模組的步驟。
必要條件
- 必須安裝 Azure 命令列介面。
- 需要
networkcloud
CLI 延伸模組。 如果未安裝networkcloud
延伸模組,可遵循此處所列的步驟進行安裝。 - 要升級之目標叢集的 Microsoft Azure 入口網站存取權。
- 您必須透過
az login
登入與目標叢集相同的訂用帳戶 - 目標叢集必須處於執行中狀態、所有控制平面節點狀況良好,而且 80+% 計算節點處於執行中健全狀態。
檢查目前的運行時間版本
在升級之前確認目前的叢集運行時間版本: 如何檢查目前的叢集運行時間版本。
尋找可用的執行階段版本
透過 Azure 入口網站
若要尋找可用的可升級執行階段版本,請在 Microsoft 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 命令列介面檢視升級狀態,請使用 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 支援服務來診斷失敗。