OKEワーカー・ノード・プールの作成

ワークロード・クラスタのCompute Cloud@CustomerでOKEワーカー・ノード・プールを作成する方法について学習します。

ノードはCompute Cloud@Customerコンピュート・インスタンスです。ワーカー・ノード・プールを作成する場合は、作成するノードの数と、インスタンスを定義するその他のパラメータを指定します。

ノート

OKE cloud-initスクリプトはカスタマイズできません。

プロキシ設定を構成するには、CLIまたはAPIを使用して、ノード・メタデータにプロキシを設定します。クラスタでVCNネイティブ・ポッド・ネットワーキングを使用している場合は、noproxy設定に169.254.169.254を追加します。

    1. コンピュートCloud@Customerコンソール・ダッシュボードで、「コンテナ/Kubernetesクラスタの表示(OKE)」を選択します。

      ノード・プールをアタッチするクラスタがリストに表示されない場合は、ページ上部のコンパートメント・メニューから別のコンパートメントを選択します。

    2. ノード・プールの追加先のクラスタの名前を選択します。

    3. クラスタの詳細ページの「リソース」で、「ノード・プール」を選択します。

    4. 「ノード・プール」リストで、「ノード・プールの追加」を選択します。

    5. 「ノード・プールの追加」ダイアログ・ボックスで、次の情報を入力します:

      • 名前: 新しいノード・プールの名前。機密情報を入力しないでください。

      • コンパートメント: 新しいノード・プールを作成するコンパートメント。

      • ノード・プール・オプション: 「ノード数」フィールドに、このノード・プールに必要なノード数を入力します。デフォルトは0です。最大数はクラスタ当たり128で、複数のノード・プールに分散できます。

      • ネットワーク・セキュリティ・グループ: ネットワーク・セキュリティ・グループを有効にするボックスにチェックマークを入れた場合は、「ネットワーク・セキュリティ・グループの追加」を選択し、ドロップダウン・リストからNSGを選択します。必要なNSGを見つけるには、コンパートメントの変更が必要になる場合があります。ワーカー・サブネットからのプライマリVNICは、このNSGにアタッチされます。

      • 配置構成

      • ソース・イメージ: イメージを選択します。

        1. 「プラットフォーム・イメージ・ソース・タイプ」を選択します。

        2. リストからイメージを選択してください。

          イメージ・リストには、オペレーティング・システム、OSバージョンおよびKubernetesバージョン列があります。「OSバージョン」または「Kubernetesバージョン」の右側にあるドロップダウン・メニュー矢印を使用して、別のバージョンを選択できます。

          使用するイメージがリストに表示されない場合は、CLIプロシージャを使用してイメージのOCIDを指定します。目的のイメージのOCIDを取得するには、このイメージを以前に使用したノード・プールに対してce node-pool getコマンドを使用します。

          ノート

          指定するイメージには、クラスタの作成時に指定したKubernetesバージョンより新しいKubernetesバージョンを含めることはできません。クラスタのKubernetesバージョンは、クラスタ・リスト表の列にあります。

      • シェイプ: ワーカー・ノードのシェイプを選択します。シェイプはVM.PCAStandard.E5です。Flexは変えられない。

        必要なOCPUの数を指定します。オプションで、必要なメモリーの合計量を指定できます。メモリーのギガバイトのデフォルト値は、OCPUに指定した数の16倍です。許容される最小値と最大値を表示するには、各値フィールドの内側を選択します。

      • ブート・ボリューム: (オプション)ボックスにチェックマークを入れ、カスタム・ブート・ボリューム・サイズを指定します。

        ブート・ボリューム・サイズ(GB): 選択したイメージのデフォルトのブート・ボリューム・サイズが表示されます。大きいサイズを指定するには、50から16384までの値をギガバイト(50 GBから16 TB)で入力するか、増分および減分矢印を使用します。

        カスタム・ブート・ボリューム・サイズを指定する場合、より大きいサイズを使用できるようにパーティションを拡張する必要があります。Oracle Linuxプラットフォーム・イメージには、oci-utilsパッケージが含まれています。そのパッケージのoci-growfsコマンドを使用して、ルート・パーティションを拡張し、ファイル・システムを拡張します。oci-growfsを参照してください。

      • ポッド通信(VCNネイティブ・ポッド・ネットワーキング・クラスタのみ)

        ポッド通信サブネット: ポッド・サブネット(VCNネイティブ・ポッド)の作成で説明されているポッド・サブネットのような構成を持つサブネットを選択します。

        ノード当たりのポッド数: ノード・プール内の単一のワーカー・ノードで実行するポッドの最大数。デフォルト値は「31」です。1から110までの数値を入力できます。指定したシェイプで許可されるVNICの数(上の「シェイプ」を参照)は、この最大ポッド数を制限します。ノード・シェイプおよびポッド数を参照してください。ポッド・サブネットのアドレス領域を節約するには、単一のワーカー・ノードで実行するポッドの最大数を減らします。これにより、ポッド・サブネットに事前に割り当てられるIPアドレスの数が削減されます。

        「ネットワーク・セキュリティ・グループ(NSG)でセキュリティ・ルールを使用」チェック・ボックスを選択した場合は、「ネットワーク・セキュリティ・グループの追加」ボタンを選択し、ドロップダウン・リストからNSGを選択します。必要なNSGを見つけるには、コンパートメントの変更が必要になる場合があります。ポッド・サブネットからのセカンダリVNICは、このNSGにアタッチされます。

      • コードンおよびドレイン: (オプション)削除猶予期間の分数を減らすか増やすには、矢印を使用します。「猶予期間後に強制終了」の選択を解除することはできません。ノードは、ポッドが削除された後、またはすべてのポッドが削除されない場合でも、削除猶予期間の終了時に削除されます。

        コードンおよびドレインおよびエビクションの猶予期間については、このページの「CLI」タブを選択し、ノードおよびノード・プールの削除設定を参照してください。

      • SSHキー: ワーカー・ノードの公開SSHキー。公開キー・ファイルをアップロードするか、ファイルの内容をコピーして貼り付けます。

      • Kubernetesラベル: 「Kubernetesラベルの追加」ボタンを選択し、キー名と値を入力します。これらのラベルを使用して、特定のノードまたはノードのグループでスケジュールするためのポッドをターゲットにできます。CLI手順の説明と例を参照してください。

      • ノード・プール・タグ: ノード・プール・リソースの定義済タグまたはフリーフォーム・タグ。

        ノート

        OraclePCA-OKE.cluster_id定義済タグまたはClusterResourceIdentifierフリーフォーム・タグの値を指定しないでください。これらのタグ値はシステムによって生成され、ノード(インスタンス)にのみ適用され、ノード・プール・リソースには適用されません。

      • ノード・タグ: ノード・プール内のすべてのノードに適用される定義済またはフリーフォーム・タグ。

        重要

        OraclePCA-OKE.cluster_id定義済タグまたはClusterResourceIdentifierフリーフォーム・タグの値を指定しないでください。これらのタグ値はシステムによって生成されます。

    6. 「ノード・プールの追加」を選択します。

      ノード・プールの詳細ページが表示されます。「リソース」で、「作業リクエスト」を選択して、ノード・プールの作成の進行状況を確認し、「ノード」リストに追加されているノードを表示します。作業リクエストのステータスは、クラスタが「アクティブ」状態または「失敗」状態になるまで「受理済」です。

      インスタンスのリストでこれらのノードを識別するには、これらのノードの名前の形式がoke-IDであることに注意してください。IDは、ノード・プールOCIDのpca_nameの後の最初の32文字です。このノード・プールOCIDのID文字列を含む名前を持つインスタンスをリストで検索します。

      インスタンスのリストでこれらのノードを識別するには、これらのノードの名前がノード・プールOCIDのccc_nameの後の最初の32文字を含み、OraclePCA-OKE/cluster_idタグにクラスタOCIDが含まれていることに注意してください。

    次の手順:

    1. ワーカー・ノードに必要なレジストリまたはリポジトリを構成します。OKEサービスおよびアプリケーション・イメージで使用する自己管理パブリックまたはイントラネット・コンテナ・レジストリへのアクセス権があることを確認します。

    2. Compute Cloud@Customerの外部でコンテナ化されたアプリケーションを公開するサービスを作成します。コンテナ化されたアプリケーションの公開を参照してください。

    3. アプリケーションで使用する永続ストレージを作成します。コンテナ化されたアプリケーションのストレージの追加を参照してください。

    既存のノードのプロパティを変更するには、かわりに新しい設定で新しいノード・プールを作成し、作業を新しいノードに移動します。

  • 新しいノード・プールを作成するには、oci ce node-pool createコマンドと必要なパラメータを使用します。

    oci ce node-pool create --cluster-id <cluster_OCID> --compartment-id <compartment_OCID> --name <pool_name> --node-shape <node_shape_name> [OPTIONS]
    1. コマンドの実行に必要な情報を取得します。

      • ノード・プールを作成するコンパートメントのOCID: oci iam compartment list

      • このノード・プールのクラスタのOCID: oci ce cluster list

      • ノード・プールの名前。機密情報を入力しないでください。

      • ワーカー・サブネットOCIDおよびフォルト・ドメインを含む、ノードの配置構成。コンソールの手順の配置構成の説明を参照してください。このオプションの内容と形式を表示するには、次のコマンドを使用します。

        $ oci ce node-pool create --generate-param-json-input placement-configs

        フォルト・ドメインをリストするには、次のコマンドを使用します: oci iam fault-domain list。配置構成で複数のフォルト・ドメインまたは複数のサブネットを指定しないでください。システムで最適なフォルト・ドメインを選択できるようにするには、フォルト・ドメインを指定しないでください。

      • (VCNネイティブ・ポッド・ネットワーキング・クラスタのみ)ポッド・サブネットのOCID。ポッド・サブネット(VCNネイティブ・ポッド)の作成を参照してください。前のコンソールの手順のポッド通信の説明も参照してください。--pod-subnet-idsオプションを使用します。--pod-subnet-idsオプション値は配列ですが、指定できるポッド・サブネットOCIDは1つのみです。

        ノード・プール内の単一のワーカー・ノードで実行するポッドの最大数。--max-pods-per-nodeオプションを使用します。デフォルト値は「31」です。1から110までの数値を入力できます。指定したシェイプで許可されるVNICの数(下の「シェイプの名前」を参照)は、この最大ポッド数を制限します。ノード・シェイプおよびポッド数を参照してください。ポッド・サブネットのアドレス領域を節約するには、単一のワーカー・ノードで実行するポッドの最大数を減らします。これにより、ポッド・サブネットに事前に割り当てられるIPアドレスの数が削減されます。

        (オプション)このノード・プールのポッドに使用するネットワーク・セキュリティ・グループのOCID。--pod-nsg-idsオプションを使用します。NSGは最大5つまで指定できます。

      • このノード・プールのノードに使用するイメージのOCID。

        使用するイメージのOCIDを取得するには、次のコマンドを使用します:

        $ oci compute image list --compartment-id compartment_OCID
                             

        使用するイメージがリストされていない場合は、このイメージを以前に使用したノード・プールのce node-pool getコマンドの出力からイメージのOCIDを取得できます。

        ノート

        指定するイメージは、そのdisplay-name-OKE-があり、クラスタの作成時に指定したKubernetesバージョンより新しいKubernetesバージョンを持つことはできません。

        クラスタのKubernetesバージョンは、cluster list出力に表示されます。イメージのKubernetesバージョンは、image list出力のdisplay-nameプロパティに表示されます。次のイメージのKubernetesバージョンは1.29.9です。

        "display-name": "uln-pca-Oracle-Linux8-OKE-1.29.9-20250325.oci"

        node-pool createコマンドで--kubernetes-versionオプションを指定しないでください。

        カスタム・ブート・ボリューム・サイズをギガバイト単位で指定できます。デフォルトのブート・ボリューム・サイズは50 GBです。カスタム・ブート・ボリューム・サイズを指定するには、--node-source-detailsオプションを使用して、ブート・ボリューム・サイズとイメージの両方を指定します。--node-image-id--node-source-detailsの両方を指定することはできません。次のコマンドを使用して、ノード・ソースの詳細オプションの内容と形式を表示します。

        $ oci ce node-pool create --generate-param-json-input node-source-details

        カスタム・ブート・ボリューム・サイズを指定する場合、より大きいサイズを使用できるようにパーティションを拡張する必要があります。Oracle Linuxプラットフォーム・イメージには、oci-utilsパッケージが含まれています。そのパッケージのoci-growfsコマンドを使用して、ルート・パーティションを拡張し、ファイル・システムを拡張します。oci-growfsを参照してください。

      • このノード・プールのワーカー・ノードのシェイプの名前。Compute Cloud@Customer X10システムの場合、コントロール・プレーン・ノードのシェイプはVM.PCAStandard.E5です。フレックス

        次の例に示すように、シェイプ構成を指定します。ocpusに値を指定する必要があります。memoryInGBsプロパティはオプションです。デフォルト値は、ocpusの16倍です。

        --node-shape-config '{"ocpus": 32, "memoryInGBs": 512}'
        ノート

        実行中の10個のポッドごとに、少なくとも2 OCPUおよび32 GBのメモリーを割り当てます。計画されているワークロードに応じて、より多くのリソースを割り当てる必要がある場合があります。ポッドおよびコンテナのResource Managementを参照してください。

      • (オプション)このノード・プールのノードに使用するネットワーク・セキュリティ・グループのOCID。--nsg-idsオプションを使用します。複数のNSGを指定しないでください。

      • (オプション)ラベルノードにラベルを設定すると、特定のノードまたはノード・グループでスケジューリングするためにポッドをターゲットにできます。この機能を使用して、特定のポッドが特定の分離、セキュリティまたは規制プロパティを持つノードでのみ実行されるようにします。

        --initial-node-labelsオプションを使用して、ノードにラベルを追加します。ラベルは、Kubernetesクラスタに参加した後にノードに追加するキー/値ペアのリストです。メタデータ・キーの制限があります。メタデータ・キーの制限事項を参照してください。

        次に、ノード・プール内のノードに適用するラベルの例を示します。

        --initial-node-labels '[{"key":"disktype","value":"ssd"}]

        ラベルに基づいてノードを選択する簡単な方法は、ポッド構成でnodeSelectorを使用することです。Kubernetesは、nodeSelectorセクションで指定されている各ラベルを持つノードにのみポッドをスケジュールします。

        次のポッド構成からの抜粋の例では、この構成を使用するポッドを、ssdディスク・タイプ・ラベルを持つノードで実行する必要があることを指定します。

        nodeSelector:
          disktype: ssd
      • (オプション)ノード・メタデータ。--node-metadataオプションを使用して、カスタム・ユーザー・データをノードにアタッチします。特定の例については、次のプロキシ設定項目を参照してください。

        メタデータ・キーの制限事項を参照してください。ノード・メタデータの最大サイズは32,000バイトです。

      • (オプション)プロキシ設定。ネットワークで、ワーカー・ノードが外部レジストリまたはリポジトリに到達できるようにするためのプロキシ設定が必要な場合は、たとえば、--node-metadataオプションの引数を作成します。

        --node-metadataオプション引数で、次のサンプル・ファイル引数に示すように、crio-proxyおよびcrio-noproxyの値を指定します。

        {
          "crio-proxy": "http://<your_proxy>.<your_domain_name>:<your_port>",
          "crio-noproxy": "localhost,127.0.0.1,<your_domain_name>,ocir.io,<Kubernetes_cidr>,<pods_cidr>"
        }

        クラスタでVCNネイティブ・ポッド・ネットワーキングを使用している場合は、次の例のように、noproxy設定に169.254.169.254を追加します:

        "crio-noproxy": "localhost,127.0.0.1,your_domain_name,ocir.io,Kubernetes_cidr,pods_cidr,169.254.169.254"
      • (オプション)ノードおよびノード・プールの削除設定。ノード・プールの削除、指定したノードの削除、ノード・プールのサイズの縮小、またはノード・プール・ノードの配置構成の変更時に、ノードの削除を処理する方法を指定できます。これらのノード削除パラメータは、ノード・プールの更新、指定したノードの削除、またはノード・プールの削除時にも設定または変更できます。

        ノード・プールの削除設定を指定するには、--node-eviction-node-pool-settingsオプションの引数を作成します。ノードの削除猶予期間(evictionGraceDuration)を指定できます。ノードは、ポッドが削除された後、または削除猶予期間の終了時に常に削除されます。

        • 削除猶予期間。この値は、ワーカー・ノードをコード化およびドレインできる時間を指定します。

          コード化されたノードに新しいポッドを配置することはできません。そのノードの既存のポッドは影響を受けません。

          ノードが排出されると、各ポッドのコンテナは正常に終了し、必要なクリーンアップを実行します。

          削除猶予期間の値は、ISO 8601形式で表されます。デフォルト値と最大値は、60分(PT60M)です。最小値は20秒(PT20S)です。OKEは、常に少なくとも20秒間ノードをドレインしようとします。

        • 強制削除ノードは、ポッドが削除された後、または削除猶予期間の終了時に常に削除されます。デフォルトまたは指定された削除猶予期間の後、1つ以上のポッド・コンテナが完全に排出されていない場合でも、ノードは削除されます。

        次に、--node-eviction-node-pool-settingsオプションの引数の例を示します。isForceDeleteAfterGraceDurationプロパティを含める場合、値はtrueである必要があります。ノードは、ポッドが削除された後、または削除猶予期間の終了時に常に削除されます。

        --node-eviction-node-pool-settings '{"evictionGraceDuration": "PT30M", "isForceDeleteAfterGraceDuration": true}'
        ノート

        Terraformを使用してnode_eviction_node_pool_settingsを指定する場合は、trueがデフォルト値であっても、is_force_delete_after_grace_durationを明示的にtrueに設定する必要があります。Terraformを使用している場合、is_force_delete_after_grace_durationプロパティ設定はオプションではありません。

      • (オプション)タグ--defined-tagsまたは--freeform-tagsオプションを使用して、ノード・プール・リソースのフリーフォーム・タグを追加します。OraclePCA-OKE.cluster_id定義済タグまたはClusterResourceIdentifierフリーフォーム・タグの値を指定しないでください。これらのタグ値はシステムによって生成され、ノード(インスタンス)にのみ適用され、ノード・プール・リソースには適用されません。

        ノード・プール内のすべてのノードにフリーフォーム・タグを追加するには、--node-defined-tagsおよび--node-freeform-tagsオプションを使用します。

        重要

        OraclePCA-OKE.cluster_id定義済タグまたはClusterResourceIdentifierフリーフォーム・タグの値を指定しないでください。これらのタグ値はシステムによって生成されます。

    2. ノード・プールの作成コマンドを実行します。

      次に例を示します:

      この例に示すオプション、および--node-boot-volume-size-in-gbsnsg-idsなどの他のオプションの詳細は、コンソールの使用の手順を参照してください。--pod-subnet-idsオプションは、クラスタでVCNネイティブ・ポッド・ネットワーキングが使用されている場合にのみ適用できます

      $ oci ce node-pool create \
      --cluster-id ocid1.cluster.unique_ID --compartment-id ocid1.compartment.unique_ID \
      --name node_pool_name --node-shape shape_name --node-image-id ocid1.image.unique_ID \
      --placement-configs '[{"availabilityDomain":"AD-1","subnetId":"ocid1.subnet.unique_ID"}]' \
      --pod-subnet-ids '["ocid1.subnet.unique_ID"]' --size 10 --ssh-public-key "public_key_text"

      work-request getコマンドを使用して、ノード・プールの作成操作のステータスを確認します。作業リクエストOCIDは、cluster get出力のmetadataセクションのcreated-by-work-request-idにあります。

      $ oci ce work-request get --work-request-id workrequest_OCID
                     

      作業リクエストのステータスは、クラスタがアクティブ状態または失敗状態になるまでACCEPTEDになります。

      インスタンスのリストでこれらのノードを識別するには、これらのノードの名前の形式がoke- ID であることに注意してください。 ID は、ノード・プールOCIDの名前の後の最初の32文字です。このノード・プールOCIDの ID 文字列を含む名前を持つインスタンスをリストで検索します。

    CLIのコマンド、フラグおよびオプションの完全なリストは、コマンドライン・リファレンスを参照してください。

    次の手順:

    1. ワーカー・ノードに必要なレジストリまたはリポジトリを構成します。OKEサービスおよびアプリケーション・イメージで使用する自己管理パブリックまたはイントラネット・コンテナ・レジストリへのアクセス権があることを確認します。

    2. Compute Cloud@Customerの外部でコンテナ化されたアプリケーションを公開するサービスを作成します。コンテナ化されたアプリケーションの公開を参照してください。

    3. アプリケーションで使用する永続ストレージを作成します。コンテナ化されたアプリケーションのストレージの追加を参照してください。

    既存のノードのプロパティを変更するには、かわりに新しい設定で新しいノード・プールを作成し、作業を新しいノードに移動します。

  • CreateNodePool操作を使用して、新しいノード・プールを作成します。

    APIの使用およびリクエストの署名の詳細は、REST APIおよびセキュリティ資格証明を参照してください。SDKについては、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。

    1. ワーカー・ノードに必要なレジストリまたはリポジトリを構成します。OKEサービスおよびアプリケーション・イメージで使用する自己管理パブリックまたはイントラネット・コンテナ・レジストリへのアクセス権があることを確認します。

    2. Compute Cloud@Customerの外部でコンテナ化されたアプリケーションを公開するサービスを作成します。コンテナ化されたアプリケーションの公開を参照してください。

    3. アプリケーションで使用する永続ストレージを作成します。コンテナ化されたアプリケーションのストレージの追加を参照してください。

    既存のノードのプロパティを変更するには、かわりに新しい設定で新しいノード・プールを作成し、作業を新しいノードに移動します。