Share via


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"

クラスターのログ記録

クラスターの作成ログは、次の場所で確認できます。

  1. Azure portal の Resource または ResourceGroup のアクティビティ ログ。
  2. コマンドラインで--debug フラグを渡した Azure CLI。

クラスターを展開する

クラスターが作成されると、クラスターのデプロイ アクションをトリガーできます。 クラスターのデプロイ アクションによって、ブートストラップ イメージが作成され、クラスターがデプロイされます。

クラスターのデプロイにより、クラスター マネージャーで次の一連のイベントが開始されます

  1. クラスター/ラックのプロパティの検証
  2. エフェメラル ブートストラップ クラスターの起動可能イメージの生成 (インフラストラクチャの検証)。
  3. 対象となるブートストラップ マシンの IPMI インターフェイスとの相互作用。
  4. ハードウェア検証チェックを実行する
  5. クラスターのデプロイ プロセスの監視。

オンプレミスのクラスターを展開する:

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_NAMECOMP1_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 などがあります。

Azure portal のスクリーンショット。クラスター デプロイ進捗の kcp init を示しています。

Azure portal のスクリーンショット。クラスター デプロイ進捗の拡張機能アプリケーションを示しています。

detailedStatus が Running に設定され、detailedStatusMessage にメッセージ Cluster is up and running が表示されると、クラスターのデプロイは完了します。

Azure portal のスクリーンショット。クラスター デプロイの完了を示しています。

クラスターの管理バージョンを表示します:

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"

クラスターのデプロイ ログ

クラスターの作成ログは、次の場所で確認できます。

  1. Azure portal の Resource または ResourceGroup のアクティビティ ログ。
  2. コマンドラインで--debug フラグを渡した Azure CLI。

Azure portal のスクリーンショット。クラスター デプロイ進捗のアクティビティ ログを示しています。