Azure CLI を使用してクラスターを作成およびプロビジョニングする
この記事では、Azure コマンド ライン インターフェイス (AzCLI) を使用してクラスターを作成する方法について説明します。 このドキュメントでは、クラスターの状態の確認、更新、または削除の方法についても説明します。
前提条件
- Azure リージョンにネットワーク ファブリック コントローラーとクラスター マネージャーが存在することを確認する
- ネットワーク ファブリックが正常にプロビジョニングされたことを確認する
API ガイドとメトリック
API ガイドには、リソース プロバイダーとリソース モデル、API に関する情報が記載されています。
ログ データから生成されたメトリックは、Azure Monitor メトリックで使用できます。
クラスターの作成
インフラストラクチャ クラスター リソースは、クラスター マネージャー内のプラットフォームのオンプレミス デプロイを表します。 他のプラットフォーム固有のリソースはすべて、そのライフサイクルの間、これに依存します。
このオンプレミス デプロイ用のネットワーク ファブリックを適切に作成しておく必要があります。 各 Operator Nexus オンプレミス インスタンスとネットワーク ファブリックの間には 1 対 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":"$SA_PASS","username":"$SA_USER"},"rackSlot":1,"serialNumber":"$SA_SN","storageApplianceName":"$SA_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 "$NFC_ID" \
--cluster-service-principal application-id="$SP_APP_ID" \
password="$SP_PASS" principal-id="$SP_ID" tenant-id="$TENANT_ID" \
--secret-archive "{key-vault-id:$KVRESOURCE_ID, use-key-vault:true}" \
--cluster-type "$CLUSTER_TYPE" --cluster-version "$CLUSTER_VERSION" \
--tags $TAG_KEY1="$TAG_VALUE1" $TAG_KEY2="$TAG_VALUE2"
代わりに ARM テンプレート エディターで ARM テンプレートまたはパラメーター ファイルを使ってクラスターを作成できます。
クラスター操作のパラメーター
パラメーター名 | 説明 |
---|---|
CLUSTER_NAME | クラスターのリソース名 |
LOCATION | クラスターがデプロイされる Azure リージョン |
CL_NAME | Azure portal のクラスター マネージャーのカスタムの場所 |
CLUSTER_RG | クラスター リソース グループ名 |
LAW_ID | クラスターの Log Analytics ワークスペース ID |
CLUSTER_LOCATION | クラスターのローカル名 |
AGGR_RACK_RESOURCE_ID | アグリゲーター ラックの RackID |
AGGR_RACK_SKU | アグリゲーター ラックのラック SKU |
AGGR_RACK_SN | アグリゲーター ラックのラックのシリアル番号 |
AGGR_RACK_LOCATION | アグリゲーター ラックのラックの物理的な場所 |
AGGR_RACK_BMM | 単一ラック展開の場合にのみ使い、マルチラックの場合は空にします |
SA_NAME | ストレージ アプライアンス デバイス名 |
SA_PASS | ストレージ アプライアンス管理者のパスワード |
SA_USER | ストレージ アプライアンス管理者ユーザー |
SA_SN | ストレージ アプライアンスのシリアル番号 |
COMPX_RACK_RESOURCE_ID | CompX ラックの RackID (compute-rack-definitions 内の各ラックに対して繰り返します) |
COMPX_RACK_SKU | CompX ラックのラック SKU (compute-rack-definitions 内の各ラックに対して繰り返します) |
COMPX_RACK_SN | CompX ラックのラックのシリアル番号 (compute-rack-definitions 内の各ラックに対して繰り返します) |
COMPX_RACK_LOCATION | CompX ラックのラックの物理的な場所 (compute-rack-definitions 内の各ラックに対して繰り返します) |
COMPX_SVRY_BMC_PASS | CompX ラック ServerY BMC のパスワード (compute-rack-definitions の各ラックとラック内の各サーバーに対して繰り返します) |
COMPX_SVRY_BMC_USER | CompX ラック ServerY BMC のユーザー (compute-rack-definitions の各ラックとラック内の各サーバーに対して繰り返します) |
COMPX_SVRY_BMC_MAC | CompX ラック ServerY BMC の MAC アドレス (compute-rack-definitions の各ラックとラック内の各サーバーに対して繰り返します) |
COMPX_SVRY_BOOT_MAC | CompX ラック ServerY ブート NIC の MAC アドレス (compute-rack-definitions の各ラックとラック内の各サーバーに対して繰り返します) |
COMPX_SVRY_SERVER_DETAILS | CompX ラック ServerY の詳細 (compute-rack-definitions の各ラックとラック内の各サーバーに対して繰り返します) |
COMPX_SVRY_SERVER_NAME | CompX ラック ServerY 名 (compute-rack-definitions の各ラックとラック内の各サーバーに対して繰り返します) |
MRG_NAME | クラスター管理対象リソース グループ名 |
MRG_LOCATION | クラスターの Azure リージョン |
NFC_ID | ネットワーク ファブリック コントローラーへの参照 |
SP_APP_ID | サービス プリンシパルのアプリ ID |
SP_PASS | サービス プリンシパルのパスワード |
SP_ID | サービス プリンシパル ID |
TENANT_ID | サブスクリプション テナント ID |
KV_RESOURCE_ID | Key Vault ID |
CLUSTER_TYPE | クラスターの種類 (単一またはマルチラック) |
CLUSTER_VERSION | クラスターの NC バージョン |
TAG_KEY1 | クラスター作成に渡す省略可能な tag1 |
TAG_VALUE1 | クラスター作成に渡す省略可能な tag1 値 |
TAG_KEY2 | クラスター作成に渡す省略可能な tag2 |
TAG_VALUE2 | クラスター作成に渡す省略可能な tag2 値 |
クラスターの検証テスト
Operator Nexus クラスターの作成に成功すると、サブスクリプション内に AKS クラスターが作成されます。 cluster create
が成功すると、クラスター ID、クラスターのプロビジョニング状態、デプロイ状態が返されます。
クラスターの状態を確認する:
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--resource-name "$CLUSTER_RESOURCE_NAME"
リソースの provisioningState
が表示されたら、クラスターの作成は完了です: "provisioningState": "Succeeded"
クラスターのログ記録
クラスターの作成ログは、次の場所で確認できます。
- Azure portal の Resource または ResourceGroup のアクティビティ ログ。
- コマンドラインで
--debug
フラグを渡した Azure CLI。
クラスターを展開する
クラスターが作成されると、クラスターのデプロイ アクションをトリガーできます。 クラスターのデプロイ アクションによって、ブートストラップ イメージが作成され、クラスターがデプロイされます。
クラスターのデプロイにより、クラスター マネージャーで次の一連のイベントが開始されます
- クラスター/ラックのプロパティの検証
- エフェメラル ブートストラップ クラスターの起動可能イメージの生成 (インフラストラクチャの検証)。
- 対象となるブートストラップ マシンの IPMI インターフェイスとの相互作用。
- ハードウェア検証チェックを実行する
- クラスターのデプロイ プロセスの監視。
オンプレミスのクラスターを展開する:
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RESOURCE_GROUP" \
--subscription "$SUBSCRIPTION_ID" \
--no-wait --debug
ヒント
az networkcloud cluster deploy
コマンドの状態を確認するには、--debug
フラグを使用して実行します。
これにより、operationStatuses
リソースのクエリに使用する Azure-AsyncOperation
または Location
ヘッダーを取得できます。
詳細な手順については、「クラスター デプロイ失敗」セクションを参照してください。
必要に応じて、コマンドは --no-wait
フラグを使用して非同期的に実行できます。
ハードウェア検証を使用したクラスターのデプロイ
クラスターのデプロイ プロセス中に実行される手順の 1 つは、ハードウェアの検証です。 ハードウェア検証手順では、さまざまなテストを実行し、クラスターのラック定義を通じて提供されたマシンに対してチェックを行います。 これらのチェックの結果と、ユーザーがスキップしたマシンに基づいて、デプロイを続行するために必要なしきい値を満たすのに十分なノードが渡されたかどうか、または使用可能かどうかの判断が行われます。
重要
ハードウェア検証プロセスは、クラスターの作成時に指定した analyticsWorkspaceId
に結果を書き込みます。
さらに、クラスター オブジェクトに指定されたサービス プリンシパルは、Log Analytics ワークスペース データ収集 API に対する認証に使用されます。
この機能は、新しいデプロイ中にのみ表示されます (グリーン フィールド)。既存のクラスターでは、ログはさかのぼって使用できません。
既定では、ハードウェア検証プロセスによって、構成されたクラスター analyticsWorkspaceId
に結果が書き込まれます。
ただし、Log Analytics ワークスペースのデータ収集とスキーマ評価の性質上、インジェストの遅延が発生し、数分以上かかる場合があります。
このため、Log Analytics ワークスペースに結果を書き込めなかった場合でも、クラスターのデプロイが続行されます。
この可能性のあるイベントに対処するために、冗長性のために結果もクラスター マネージャー内に記録されます。
指定されたクラスター オブジェクトの Log Analytics ワークスペースに、クラスター名がプレフィックスとして、サフィックスが *_CL
である新しいカスタム テーブルが表示されます。
LAW リソースの Logs セクションでは、新しい *_CL
カスタム ログ テーブルに対してクエリを実行できます。
特定のベア メタル マシンをスキップするクラスターデプロイ アクション
パラメーターは、ハードウェア検証中にスキップする必要があるクラスター内のベア メタル マシンの名前を表すデプロイ コマンドに渡すことができます。 スキップされたノードは検証されず、ノード プールに追加されません。 さらに、スキップされたノードは、しきい値の計算で使用された合計に対してカウントされません。
az networkcloud cluster deploy \
--name "$CLUSTER_NAME" \
--resource-group "$CLUSTER_RESOURCE_GROUP" \
--subscription "$SUBSCRIPTION_ID" \
--skip-validations-for-machines "$COMPX_SVRY_SERVER_NAME"
クラスター デプロイ失敗
非同期操作の状態を追跡するには、--debug
フラグを有効にして実行します。
--debug
を指定すると、要求の進行状況を監視できます。
操作の状態 URL は、作成要求に対する HTTP 応答で Azure-AsyncOperation
または Location
ヘッダーを探してデバッグ出力を調べることで確認できます。
ヘッダーは、HTTP API 呼び出しで使用される OPERATION_ID
フィールドを提供できます。
OPERATION_ID="12312312-1231-1231-1231-123123123123*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/12312312-1231-1231-1231-123123123123*99399E995...",
"name": "12312312-1231-1231-1231-123123123123*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 を使用した非同期操作の追跡」に関する記事を参照してください。
クラスターのデプロイ検証
ポータル上で、または Azure CLI を使用して、クラスターの状態を表示します。
az networkcloud cluster show --resource-group "$CLUSTER_RG" \
--resource-name "$CLUSTER_RESOURCE_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> --resource-group "$MANAGED_CLUSTER_RG" --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 portal の Resource または ResourceGroup のアクティビティ ログ。
- コマンドラインで
--debug
フラグを渡した Azure CLI。