計算クラスタを使用した管理対象ノードのプロビジョニング

Kubernetes Engine (OKE)を使用してコンピュート・クラスタに管理対象ノード・プールを作成し、RDMA対応ベア・メタル・シェイプを使用するワークロードをサポートする方法をご紹介します。

コンピュート・クラスタは、サポートされているベア・メタル・インスタンス間で高帯域幅かつ低レイテンシのネットワーキングを提供するコンピュート・サービス・リソースです。Kubernetes Engineでは、管理対象ノード・プールの作成時にコンピュート・クラスタを指定できます。Kubernetes Engineによってノード・プールのワーカー・ノード・インスタンスが作成されると、コンピュート・サービスによって、選択したコンピュート・クラスタ内のインスタンスが起動されます。

分散トレーニング・ワークロードなど、RDMA対応のネットワーキングを必要とするワークロードを実行する管理対象ノード・プールにコンピュート・クラスタを使用します。管理対象ノード・プールにコンピュート・クラスタを指定すると、スケーリング、アップグレード、ノードの置換などのKubernetes Engine管理対象ノード・プール操作を保持しながら、RDMA対応ネットワーキングを使用できます。

Kubernetes Engineはコンピュート・クラスタを作成しません。Kubernetesエンジンでコンピュート・クラスタを選択する前に、コンピュート・サービスでコンピュート・クラスタを作成および構成します。コンピュート・クラスタの詳細は、コンピュート・サービスのドキュメントのコンピュート・クラスタを参照してください。

管理対象ノード・プールにコンピュート・クラスタを指定すると、Kubernetes Engineによって、コンピュートHPC RDMA認証プラグインやコンピュートHPC RDMA自動構成プラグインなど、RDMAネットワーキングに必要なOracle Cloud Agent HPCプラグインが自動的に有効になります。Kubernetes Engineノード・プールAPIを使用して、このOracle Cloud Agentプラグイン構成をカスタマイズすることはできません。

管理対象ノード・プールの作成時にのみ、コンピュート・クラスタを指定できます。既存のノード・プールのコンピュート・クラスタを追加、削除または変更することはできません。別のコンピュート・クラスタを使用するには、新しい管理対象ノード・プールを作成します。

コンピュート・クラスタに管理対象ノード・プールを作成する前に、次の点に注意してください:

  • Kubernetes Engineクラスタは拡張クラスタである必要があります。
  • コンピュート・サービスにコンピュート・クラスタを作成します。
  • コンピュート・クラスタのライフサイクル状態がACTIVEであることを確認します。
  • RDMAおよびコンピュート・クラスタをサポートするノード・プール・シェイプを使用します(Computeサービス・ドキュメントのサポートされているシェイプを参照)。
  • ノード・プール配置構成には、コンピュート・クラスタを含む可用性ドメインのみを含める必要があります。
  • 配置構成にフォルト・ドメインを指定しないでください。コンピュート・クラスタが指定されている場合、フォルト・ドメインの配置はComputeサービスによって管理されます。
  • Kubernetes Engineがワーカー・ノード・インスタンスの起動時にコンピュート・クラスタを使用できるように、必要なIAMポリシーを追加します。

必要なIAMポリシー

ノード・プールがコンピュート・クラスタを使用できるようにするには、ノード・プール・リソース・プリンシパルがコンピュート・クラスタを使用できるようにするポリシーが存在する必要があります。例:

allow any-user to {COMPUTE_CLUSTER_LAUNCH_INSTANCE} in compartment <compartment_name> where request.principal.type = 'nodepool' and target.resource.id = '<compute_cluster_OCID>'

ここでは:

  • <compartment_name>は、コンピュート・クラスタを含むコンパートメントの名前です。
  • <compute_cluster_OCID>は、コンピュート・クラスタ内のOCIDです。

コンソールの使用

コンピュート・クラスタは、管理対象ノード・プールでクラスタを作成するとき、または既存の拡張クラスタで管理対象ノード・プールを作成するときに指定できます。

既存の管理対象ノード・プールの更新時にコンピュート・クラスタを指定することはできません。

クラスタの作成および管理対象ノード・プールのコンピュート・クラスタの指定

  1. 「カスタム作成」ワークフローを使用してクラスタを作成する手順に従います。コンソールを使用した、カスタム作成ワークフローでの明示的に定義された設定によるクラスタの作成を参照してください。
  2. ノード・プールの詳細を指定する場合:
    1. 「ノード・タイプ」で、「管理対象」を選択します。
    2. ノード配置構成を次のように指定します。
      • 可用性ドメイン:コンピュート・クラスタを含む可用性ドメインを選択します。
      • ワーカー・ノード・サブネット・コンパートメント:ワーカー・ノード・サブネットを含むコンパートメントを選択します。
      • ワーカー・ノード・サブネット:コンピュート・クラスタの可用性ドメイン内のサブネットを選択します。
      • フォルト・ドメイン:フォルト・ドメインを指定しません。フォルト・ドメインの配置は、Computeサービスによって管理されます。
    3. 「ノード・シェイプ」で、RDMAおよびコンピュート・クラスタをサポートするノード・シェイプを選択します。
    4. 「拡張オプション」を選択し、「コンピュート・クラスタの追加」セクションで使用するコンピュート・クラスタを指定します:
      • コンピュート・クラスタ・コンパートメント:コンピュート・クラスタを含むコンパートメントを選択します。
      • コンピュート・クラスタ:コンピュート・クラスタを選択してください。
  3. クラスタを作成します。

Kubernetesエンジンは、クラスタおよび管理対象ノード・プールを作成します。Kubernetes Engineが管理対象ノード・プールのワーカー・ノード・インスタンスを作成すると、コンピュート・サービスは選択したコンピュート・クラスタ内のインスタンスを起動します。

管理対象ノード・プールの作成とコンピュート・クラスタの指定

  1. 「クラスタ」リスト・ページで、新しいノード・プールを作成する拡張クラスタの名前を選択します。リスト・ページまたはクラスタの検索に関するヘルプが必要な場合は、クラスタのリストを参照してください。
  2. クラスタ詳細ページのノード・プール・タブで、「ノード・ プールの追加」を選択して、新しい管理対象ノード・プールを作成し、そのワーカー・ノードに必要なプロパティを指定します。
  3. ノード・プールの詳細を指定する場合:
    1. 「ノード・タイプ」で、「管理対象」を選択します。
    2. 「拡張オプション」を選択し、「コンピュート・クラスタの追加」セクションで使用するコンピュート・クラスタを指定します:
      • コンピュート・クラスタ・コンパートメント:コンピュート・クラスタを含むコンパートメントを選択します。
      • コンピュート・クラスタ:コンピュート・クラスタを選択してください。
    3. ノード配置構成を次のように指定します。
      • 可用性ドメイン:コンピュート・クラスタを含む可用性ドメインを選択します。
      • ワーカー・ノード・サブネット・コンパートメント:ワーカー・ノード・サブネットを含むコンパートメントを選択します。
      • ワーカー・ノード・サブネット:コンピュート・クラスタの可用性ドメイン内のサブネットを選択します。
      • フォルト・ドメイン:フォルト・ドメインを指定しません。フォルト・ドメインの配置は、Computeサービスによって管理されます。
    4. 「ノード・シェイプ」で、RDMAおよびコンピュート・クラスタをサポートするノード・シェイプを選択します。
  4. ノード・プールを作成します。

Kubernetes Engineは、管理対象ノード・プールを作成します。Kubernetes Engineが管理対象ノード・プールのワーカー・ノード・インスタンスを作成すると、コンピュート・サービスは選択したコンピュート・クラスタ内のインスタンスを起動します。

CLIの使用

CLIを使用してコンピュート・クラスタに管理対象ノード・プールを作成するには、--node-config-detailsパラメータにcomputeClusterIdキー/値ペアを次の形式で含めます:

oci ce node-pool create \
  --cluster-id <cluster_OCID> \
  --compartment-id <compartment_OCID> \
  --name <node_pool_name> \
  --kubernetes-version <kubernetes_version> \
  --node-shape <shape> \
  --node-config-details '{
    "size": 2,
    "placementConfigs": [
      {
        "availabilityDomain": "<availability_domain>",
        "subnetId": "<subnet_OCID>"
      }
    ],
    "computeClusterId": "<compute_cluster_OCID>"
  }'

配置構成には、コンピュート・クラスタを含む可用性ドメインのみを含める必要があります。フォルト・ドメインを指定しないでください。

APIの使用

管理対象ノード・プールを作成する場合は、ノード・プール構成の詳細にcomputeClusterIdを指定します。

ノード・プールの作成リクエストの場合は、次を指定します:

CreateNodePoolDetails.createNodePoolNodeConfigDetails.computeClusterId

computeClusterIdプロパティは不変です。UpdateNodePoolDetailscomputeClusterIdを指定することはできません。

トラブルシューティング

次の情報を使用して、管理対象ノード・プール内のコンピュート・クラスタの問題をトラブルシューティングします。

コンピュート・クラスタはリストで使用できません

次の点を確認してください。

  • 正しいコンパートメントが選択されました。
  • コンピュート・クラスタはアクティブです。
  • コンピュート・クラスタを表示または使用する権限があります。
  • Kubernetesエンジン・クラスタは拡張クラスタです。

ノード・プールの作成に失敗

次の点を確認してください。

  • Kubernetesエンジン・クラスタは拡張クラスタです。
  • ノード・プール・シェイプは、RDMAおよびコンピュート・クラスタをサポートしています。
  • 配置構成には、コンピュート・クラスタを含む可用性ドメインのみが含まれます。
  • フォルト・ドメインが配置構成で指定されていません。
  • 必要なIAMポリシーが存在します。
  • 選択したコンピュート・クラスタは削除されていないか、非アクティブではありません。

既存のノード・プールのコンピュート・クラスタを追加または変更できない

コンピュート・クラスタを指定できるのは、管理対象ノード・プールを作成する場合のみです。既存のノード・プールのコンピュート・クラスタを追加、削除または変更することはできません。

別のコンピュート・クラスタを使用するには、必要なコンピュート・クラスタを指定する新しい管理対象ノード・プールを作成します。