本文說明如何使用 Azure 命令列介面 (AzCLI) 來建立叢集。 本文也會示範如何檢查狀態、更新或刪除叢集。
必要條件
- 確認您的 Azure 區域中有網路網狀架構控制器和叢集管理員
- 確認網路網狀架構已成功佈建
API 指南和指標
API 指南提供資源提供者和資源模型以及 API 的相關資訊。
從記錄資料產生的計量可在 Azure 監視器計量取得。
限制
- 命名 - 可以在此處找到命名規則。
建立叢集
基礎結構叢集資源代表叢集管理員內平台的內部部署。 所有其他平台特定資源都相依於其生命週期。
您應該在此內部部署之前建立網路網狀架構。 每個 Operator Nexus on-premises 實例 都與一個網路結構有一對一的關聯。
重要
建立叢集之後立即更新叢集可能會導致叢集部署失敗的已知問題。 當資源在cluster.spec.computeRackDefinitions.bareMetalMachineConfigurationData
區段中 bmcConnectionString 欄位被填入之前被更新時,就會發生此問題。 bmcConnectionStrings 通常會在建立叢集的幾分鐘內設定。
若要避免此問題,請確定 bmcConnectionStrings 在透過 Azure az networkcloud update
入口網站或命令更新叢集資源之前,包含無空值。
若要確認狀態,請在 Azure 入口網站中開啟叢集 (Operator Nexus) 資源的 JSON 屬性,或執行 az networkcloud cluster show
CLI 命令,如下列範例所示。 如果 bmmConnectionString 值顯示非空的 redfish+https..
值,則可以安全地更新叢集。 此問題將在未來的版本中修正。
的 az networkcloud cluster show -n cluster01 -g cluster01resourceGroup--query 'computeRackDefinitions[].bareMetalMachineConfigurationData[].bmcConnectionString' -o json
範例 bmcConnectionString 輸出如下所示:
["redfish+https://10.9.3.20/redfish/v1/Systems/System.Embedded.1",
"redfish+https://10.9.3.19/redfish/v1/Systems/System.Embedded.1",
"redfish+https://10.9.3.18/redfish/v1/Systems/System.Embedded.1",
"redfish+https://10.9.3.17/redfish/v1/Systems/System.Embedded.1"]
使用 Azure CLI 建立叢集 - 單一記憶體設備:
重要
此命令會針對包含單一存儲設備的 Nexus 實例建立叢集。 如果您的執行對象是具有兩個儲存設備的執行個體,則不會設定第二個設備。 如果您的 Nexus 實例包含兩個儲存設備,請遵循適用於多個儲存設備的指示。
az networkcloud cluster create --name "<CLUSTER_NAME>" --location "<LOCATION>" \
--extended-location name="<CL_NAME>" type="CustomLocation" \
--resource-group "<CLUSTER_RG>" \
--analytics-workspace-id "<LAW_ID>" \
--cluster-location "<CLUSTER_LOCATION>" \
--network-rack-id "<AGGR_RACK_RESOURCE_ID>" \
--rack-sku-id "<AGGR_RACK_SKU>"\
--rack-serial-number "<AGGR_RACK_SN>" \
--rack-location "<AGGR_RACK_LOCATION>" \
--bare-metal-machine-configuration-data "["<AGGR_RACK_BMM>"]" \
--storage-appliance-configuration-data '[{"adminCredentials":{"password":"<SA1_PASS>","username":"<SA_USER>"},"rackSlot":1,"serialNumber":"<SA1_SN>","storageApplianceName":"<SA1_NAME>"}]' \
--compute-rack-definitions '[{"networkRackId": "<COMPX_RACK_RESOURCE_ID>", "rackSkuId": "<COMPX_RACK_SKU>", "rackSerialNumber": "<COMPX_RACK_SN>", "rackLocation": "<COMPX_RACK_LOCATION>", "storageApplianceConfigurationData": [], "bareMetalMachineConfigurationData":[{"bmcCredentials": {"password":"<COMPX_SVRY_BMC_PASS>", "username":"<COMPX_SVRY_BMC_USER>"}, "bmcMacAddress":"<COMPX_SVRY_BMC_MAC>", "bootMacAddress":"<COMPX_SVRY_BOOT_MAC>", "machineDetails":"<COMPX_SVRY_SERVER_DETAILS>", "machineName":"<COMPX_SVRY_SERVER_NAME>"}]}]'\
--managed-resource-group-configuration name="<MRG_NAME>" location="<MRG_LOCATION>" \
--network fabric-id "<NF_ID>" \
--cluster-service-principal application-id="<SP_APP_ID>" \
password="$SP_PASS" principal-id="$SP_ID" tenant-id="<TENANT_ID>" \
--subscription "<SUBSCRIPTION_ID>" \
--secret-archive-settings "{identity-type:<ID_TYPE>, vault-uri:<VAULT_URI>}" \
--cluster-type "<CLUSTER_TYPE>" --cluster-version "<CLUSTER_VERSION>" \
--tags <TAG_KEY1>="<TAG_VALUE1>" <TAG_KEY2>="<TAG_VALUE2>"
使用 Azure CLI 建立叢集 - 多個記憶體設備:
「<AGGR_RACK_SKU>」必須設定為支援兩個儲存設備的值。 請參閱 運營商 Nexus 網絡雲端 SKU 以挑選適當的 SKU。 叢集建立命令也會設置用於磁碟區建立的預設儲存裝置。 默認設備是配置數據中包含"rackSlot":1
的設備。
az networkcloud cluster create --name "<CLUSTER_NAME>" --location "<LOCATION>" \
--extended-location name="<CL_NAME>" type="CustomLocation" \
--resource-group "<CLUSTER_RG>" \
--analytics-workspace-id "<LAW_ID>" \
--cluster-location "<CLUSTER_LOCATION>" \
--network-rack-id "<AGGR_RACK_RESOURCE_ID>" \
--rack-sku-id "<AGGR_RACK_SKU>"\
--rack-serial-number "<AGGR_RACK_SN>" \
--rack-location "<AGGR_RACK_LOCATION>" \
--bare-metal-machine-configuration-data "["<AGGR_RACK_BMM>"]" \
--storage-appliance-configuration-data '[{"adminCredentials":{"password":"<SA1_PASS>","username":"<SA_USER>"},"rackSlot":1,"serialNumber":"<SA1_SN>","storageApplianceName":"<SA1_NAME>"},{"adminCredentials":{"password":"<SA2_PASS>","username":"<SA_USER>"},"rackSlot":2,"serialNumber":"<SA2_SN>","storageApplianceName":"<SA2_NAME>"}]' \
--compute-rack-definitions '[{"networkRackId": "<COMPX_RACK_RESOURCE_ID>", "rackSkuId": "<COMPX_RACK_SKU>", "rackSerialNumber": "<COMPX_RACK_SN>", "rackLocation": "<COMPX_RACK_LOCATION>", "storageApplianceConfigurationData": [], "bareMetalMachineConfigurationData":[{"bmcCredentials": {"password":"<COMPX_SVRY_BMC_PASS>", "username":"<COMPX_SVRY_BMC_USER>"}, "bmcMacAddress":"<COMPX_SVRY_BMC_MAC>", "bootMacAddress":"<COMPX_SVRY_BOOT_MAC>", "machineDetails":"<COMPX_SVRY_SERVER_DETAILS>", "machineName":"<COMPX_SVRY_SERVER_NAME>"}]}]'\
--managed-resource-group-configuration name="<MRG_NAME>" location="<MRG_LOCATION>" \
--network fabric-id "<NF_ID>" \
--cluster-service-principal application-id="<SP_APP_ID>" \
password="$SP_PASS" principal-id="$SP_ID" tenant-id="<TENANT_ID>" \
--subscription "<SUBSCRIPTION_ID>" \
--secret-archive-settings "{identity-type:<ID_TYPE>, vault-uri:<VAULT_URI>}" \
--cluster-type "<CLUSTER_TYPE>" --cluster-version "<CLUSTER_VERSION>" \
--tags <TAG_KEY1>="<TAG_VALUE1>" <TAG_KEY2>="<TAG_VALUE2>"
叢集作業的參數
參數名稱 | 描述 |
---|---|
CLUSTER_NAME | 叢集的資源名稱 |
位置 | 部署叢集的 Azure 區域 |
CL_NAME | 來自 Azure 入口網站的叢集管理員自訂位置 |
CLUSTER_RG | 叢集資源群組名稱 |
LAW_ID | 叢集的 Log Analytics 工作區識別碼 |
叢集位置 | 叢集的當地名稱 |
AGGR_RACK_RESOURCE_ID | 彙總工具機架的 RackID |
AGGR_RACK_SKU | 關於彙總工具機架的機架庫存單位 (SKU),*請參閱運算子連接點網路雲端 SKU |
AGGR_RACK_SN | 彙總工具機架的機架序號 |
AGGR_RACK_LOCATION | 彙總工具機架的機架實體位置 |
AGGR_RACK_BMM | 僅用於單一機架部署,留空以供多機架使用 |
SA1_NAME | 第一個記憶體設備裝置名稱 |
SA2_NAME | 第二個記憶體設備裝置名稱 |
SA1_PASS | 第一存儲設備管理者密碼參考的 URI 或密碼值 *請參閱 Key Vault Credential Reference |
SA2_PASS | 第二儲存設備管理密碼參考 URI 或密碼值 *請參閱 金鑰保管庫憑證參考 |
SA_USER | 儲存體設備管理使用者 |
SA1_SN | 第一個儲存體設備序號 |
SA2_SN | 第二個儲存設備序號 |
COMPX_RACK_RESOURCE_ID | 適用於 CompX Rack 的 RackID;針對 compute-rack-definitions 中的每個機架重複 |
COMPX_RACK_SKU | CompX Rack 的機架庫存單位 (SKU);針對 compute-rack-definitions 中每個機架的重複執行,*請參閱運算子連接點網路雲端庫存單位 (SKU) |
COMPX_RACK_SN | 適用於 CompX Rack 的機架序號;針對 compute-rack-definitions 中的每個機架重複 |
COMPX_RACK_LOCATION | 適用於 CompX Rack 的機架實體位置;針對 compute-rack-definitions 中的每個機架重複 |
COMPX_SVRY_BMC_PASS | CompX Rack ServerY 基板管理控制器 (BMC) 密碼參考 URI 或密碼值;此步驟需針對計算機架定義中的每個機架以及機架中的每個伺服器重複執行 *請參閱 金鑰保存庫憑證參考 |
COMPX_SVRY_BMC_USER | CompX Rack ServerY BMC 使用者;針對 compute-rack-definitions 中的每個機架以及機架中的每個伺服器重複 |
COMPX_SVRY_BMC_MAC | CompX Rack ServerY BMC MAC 位址;針對 compute-rack-definitions 中的每個機架以及機架中的每個伺服器重複 |
COMPX_SVRY_BOOT_MAC | CompX Rack ServerY 開機網路介面卡 (NIC) MAC 位址;針對 compute-rack-definitions 中的每個機架以及機架中的每個伺服器重複 |
COMPX_SVRY_伺服器詳細資料 | CompX Rack ServerY 詳細資料;針對 compute-rack-definitions 中的每個機架以及機架中的每個伺服器重複 |
COMPX_SVRY_SERVER_NAME | CompX Rack ServerY 名稱;針對 compute-rack-definitions 中的每個機架以及機架中的每個伺服器重複 |
MRG_NAME | 叢集受控資源群組名稱 |
MRG_LOCATION | 叢集 Azure 區域 |
NF_ID | 網路網狀架構的參考 |
SP_APP_ID | 服務主體應用程式識別碼 |
SP_PASS | 服務主體密碼 |
SP_ID識別碼 | 服務主體識別碼 |
TENANT_ID | 訂用帳戶租用戶識別碼 |
訂閱識別碼 | 訂用帳戶識別碼 |
KV_RESOURCE_ID | Key Vault 識別碼 |
群集類型 | 叢集類型:單一或多機架 |
叢集版本 | 網路雲端 (NC) 叢集版本 |
TAG_KEY1 | 要傳遞至叢集建立的選擇性 tag1 |
TAG_VALUE1 | 要傳遞至叢集建立的選擇性 tag1 值 |
TAG_KEY2 | 要傳遞至叢集建立的選擇性 tag2 |
TAG_VALUE2 | 要傳遞至叢集建立的選擇性 tag2 值 |
ID_TYPE | 如需 secret-archive-settings 的詳細資訊,請參閱受控識別的叢集支援 |
VAULT_URI | 如需 secret-archive-settings 的詳細資訊,請參閱受控識別的叢集支援 |
叢集身分識別
發行 2024-07-01
API 版本之後,客戶可以將受控識別指派給叢集。 支援系統指派和使用者指派的受控識別。
新增之後,您目前只能透過 API 呼叫移除身分識別。
如需作員 Nexus 叢集受控識別的詳細資訊,請參閱 適用於受控識別和使用者提供資源的 Azure 作員 Nexus 叢集支援。
使用 Azure Resource Manager 範本編輯器建立叢集
建立叢集的另一種方法是使用 ARM 範本編輯器。
若要以這種方式建立叢集,您必須提供範本檔案 (cluster.jsonc) 和參數檔案 (cluster.parameters.jsonc)。 您可以參考這兩個檔案,尋找 8 機架 2M16C SKU 叢集的範例:
cluster.jsonc、cluster.parameters.jsonc
附註
若要取得正確的格式,請複製原始程式碼檔案。 cluster.parameters.jsonc 檔案中的值是客戶特定的值,可能不是完整清單。 請更新特定環境的值欄位。
- 流覽至網頁瀏覽器中 Azure 入口網站 並登入。
- 在 Azure 入口網站 搜尋列中搜尋[部署自定義範本],然後從可用的服務中選取它。
- 在編輯器中按一下 [建置自己的範本]。
- 按一下 [載入檔案]。 找到 cluster.jsonc 範本檔案並加以上傳。
- 按一下 [儲存]。
- 按一下 [編輯參數]。
- 按一下 [載入檔案]。 找到 cluster.parameters.jsonc 參數檔案並加以上傳。
- 按一下 [儲存]。
- 選取正確的訂用帳戶。
- 搜尋資源群組,以查看資源群組是否已存在。 如果不存在,請建立新的資源群組。
- 請確定所有實例詳細資料都正確無誤。
- 按一下 [檢閱 + 建立] 。
叢集驗證
成功建立作業員 Nexus 叢集會在您的訂用帳戶中建立 Azure 資源。 由於 cluster create
成功,結果是叢集識別碼、叢集布建狀態和部署狀態會被傳回。
檢視叢集的狀態:
az networkcloud cluster show --cluster-name "<clusterName>" /
--resource-group "<resourceGroupName>" /
--subscription <subscriptionID>
當資源的 provisioningState
顯示為下列項目時,叢集建立即完成:"provisioningState": "Succeeded"
叢集記錄檔
叢集建立記錄可以在下列位置檢視:
- Azure 入口網站資源/資源群組活動記錄。
- 在命令列上傳遞具有
--debug
旗標的 Azure CLI。
設定計算部署閾值
在硬體驗證期間,計算節點允許失敗的臨界值是使用 compute-deployment-threshold
參數來設定。
如果未 compute-deployment-threshold
設定,預設值如下:
"strategyType": "Rack",
"thresholdType": "PercentSuccess",
"thresholdValue": 80,
"waitTimeMinutes": 1
compute-deployment-threshold
若需要使用不同於預設值 80% 的設定,請執行以下cluster update
命令。
例如,客戶要求的類型是「PercentSuccess」,其成功率為 97%:
az networkcloud cluster update --name "<clusterName>" /
--resource-group "<resourceGroup>" /
--compute-deployment-threshold type="PercentSuccess" grouping="PerCluster" value=97 /
--subscription <subscriptionID>
驗證更新
az networkcloud cluster show --resource-group "<resourceGroup>" --name "<clusterName>" | grep -a3 computeDeploymentThreshold
"clusterType": "MultiRack",
"clusterVersion": "<CLUSTER_VERSION>",
"computeDeploymentThreshold": {
"grouping": "PerCluster",
"type": "PercentSuccess",
"value": 97
在此範例中,如果部署的計算節點少於97個% 通過硬體驗證,叢集部署就會失敗。 注意:所有 kubernetes 控制平面 (KCP) 和 nexus 管理平面 (NMP) 都必須通過硬體驗證。 如果部署的97個% 或更多計算節點通過硬體驗證,叢集部署會繼續執行啟動程式布建階段。
附註
啟動叢集部署之後,就無法變更部署閾值。
部署叢集
重要
最佳做法是,在建立叢集之後等候 20 分鐘,再部署,以確保建立所有相關聯的資源。
建立叢集之後,可以觸發部署叢集動作。 部署叢集動作會建立啟動程序映像並部署叢集。
部署叢集會啟動一系列會在叢集管理員中發生的事件。
- 驗證叢集/機架屬性。
- 產生暫時性啟動程序叢集的可開機映像 (基礎結構驗證)。
- 與目標啟動程序機器的智慧平台管理介面 (IPMI) 介面互動。
- 執行硬體驗證檢查。
- 監視叢集部署程序。
部署內部部署叢集:
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--no-wait --debug
提示
若要檢查 az networkcloud cluster deploy
命令的狀態,可以使用 --debug
旗標來執行。
從偵錯輸出中取得用來查詢Azure-AsyncOperation
資源的Location
或operationStatuses
標頭。
如需詳細步驟,請參閱叢集部署失敗一節。
或者,命令可以使用 --no-wait
旗標以非同步方式執行。
使用硬體驗證進行叢集部署
在叢集部署程序期間,執行的其中一個步驟是硬體驗證。 硬體驗證程序會針對透過叢集機架定義所提供的電腦執行各種測試和檢查。 根據這些檢查的結果和任何使用者略過的電腦,判斷是否有足夠的節點通過和/或可用,以符合部署所需的閾值以便繼續作業。
重要
硬體驗證程式會在叢集建立時將結果寫入指定的analyticsWorkspaceId
。
此外,叢集物件中提供的服務主體會用於針對 Log Analytics 工作區資料收集 API 進行驗證。
這項功能只有在新的部署期間才會顯示 (綠色欄位);記錄不可追溯。
附註
RAID 控制器會在叢集部署期間重設,以抹除伺服器虛擬磁碟的所有資料。 除非有其他實體磁碟和/或 RAID 控制器警示,否則可以忽略任何基礎板管理控制器 (BMC) 虛擬磁碟警示。
根據預設,硬體驗證程序會將結果寫入已設定的叢集 analyticsWorkspaceId
。
不過,由於 Log Analytics 工作區資料收集和結構描述評估的特性,資料匯入可能會有幾分鐘或更長時間的延遲。
因此,即使無法將結果寫入 Log Analytics 工作區,叢集部署仍會繼續。
為了協助解決這個可能的事件,結果也會記錄在叢集管理員內作為備援。
在提供的叢集物件的 Log Analytics 工作區中,應該會出現具有叢集名稱作為前置詞和後置詞的新自訂資料表 *_CL
。
在 LAW 資源的 [記錄] 區段中,您可以針對新的 *_CL
自訂記錄資料表執行查詢。
使用略過特定裸機電腦的叢集部署
參數 --skip-validation-for-machines
代表叢集中的裸機計算機名稱,應在硬體驗證期間略過。
略過的節點不會進行驗證,也不會新增至節點集區。
此外,略過的節點不會計入閾值計算所使用的總計。
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RG" \
--subscription "$SUBSCRIPTION_ID" \
--skip-validations-for-machines "$COMPX_SVRY_SERVER_NAME"
失敗的叢集部署
重要
如果叢集處於 Failed
狀態,必須先刪除並重新建立叢集,才能再次部署叢集。 如果不符合硬體驗證閾值,或部署的任何階段都無法在叢集處於 Running
狀態之前完成,就會發生叢集失敗。
若要追蹤非同步作業的狀態,請使用已啟用 --debug
旗標執行。
指定 --debug
時,可以監視要求的進度。
檢查偵錯輸出以尋找建立要求的 HTTP 回應上的 Azure-AsyncOperation
或 Location
標頭,即可找到作業狀態 URL。
標頭可以提供 HTTP API 呼叫中使用的 OPERATION_ID
欄位。
OPERATION_ID="aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995..."
az rest -m GET -u "https://management.azure.com/subscriptions/${SUBSCRIPTION_ID}/providers/Microsoft.NetworkCloud/locations/${LOCATION}/operationStatuses/${OPERATION_ID}?api-version=2022-12-12-preview"
輸出類似 JSON 結構範例。 當錯誤碼為 HardwareValidationThresholdFailed
時,錯誤訊息會包含硬體驗證失敗的裸機電腦清單 (例如,COMP0_SVR0_SERVER_NAME
、COMP1_SVR1_SERVER_NAME
)。 這些名稱可用來剖析記錄以取得進一步的詳細資料。
{
"endTime": "2023-03-24T14:56:59.0510455Z",
"error": {
"code": "HardwareValidationThresholdFailed",
"message": "HardwareValidationThresholdFailed error hardware validation threshold for cluster layout plan is not met for cluster $CLUSTER_NAME in namespace nc-system with listed failed devices $COMP0_SVR0_SERVER_NAME, $COMP1_SVR1_SERVER_NAME"
},
"id": "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.NetworkCloud/locations/$LOCATION/operationStatuses/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995...",
"name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*99399E995...",
"resourceId": "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$CLUSTER_RESOURCE_GROUP/providers/Microsoft.NetworkCloud/clusters/$CLUSTER_NAME",
"startTime": "2023-03-24T14:56:26.6442125Z",
"status": "Failed"
}
如需其他範例,請參閱使用 Azure CLI 追蹤非同步作業一文。 如需有關特定機器驗證或部署失敗的詳細資訊,請參閱針對裸機電腦 (BMM) 佈建進行疑難排解。
叢集部署驗證
檢視入口網站上叢集的狀態,或透過 Azure CLI:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--name "$CLUSTER_NAME"
當 detailedStatus 設定為 Deploying
時,表示叢集部署正在進行中,而且 detailedStatusMessage 會顯示部署的進度。
一些在 detailedStatusMessage 中顯示的部署進度範例包括:Hardware validation is in progress.
(如果叢集是以硬體驗證部署)、Cluster is bootstrapping.
、KCP initialization in progress.
、Management plane deployment in progress.
、Cluster extension deployment in progress.
、waiting for "<rack-ids>" to be ready
等。
當 detailedStatus 設定為 Running
且 detailedStatusMessage 顯示訊息 Cluster is up and running
時,叢集部署就會完成。
檢視叢集的管理版本:
az k8s-extension list --cluster-name "$CLUSTER_NAME" --resource-group "$MRG_NAME" --cluster-type connectedClusters --query "[?name=='nc-platform-extension'].{name:name, extensionType:extensionType, releaseNamespace:scope.cluster.releaseNamespace,provisioningState:provisioningState,version:version}" -o table --subscription "$SUBSCRIPTION_ID"
叢集部署記錄
叢集建立記錄可以在下列位置檢視:
- Azure 入口網站資源/資源群組活動記錄。
- 在命令列上傳遞具有
--debug
旗標的 Azure CLI。
刪除叢集
刪除叢集會刪除 Azure 中的資源,以及位於內部部署環境中的叢集。
重要
如果叢集中有任何租用戶資源存在,刪除會失敗,直到刪除租用戶資源為止。
az networkcloud cluster delete --name "$CLUSTER_NAME" --resource-group "$CLUSTER_RG"
附註
最佳做法是,在刪除叢集之後等候 20 分鐘,再嘗試建立具有相同名稱的新叢集,以確保刪除所有相關聯的資源。