ワーカー・ノードの終了と置換

Kubernetes Engine (OKE)を使用して作成したKubernetesクラスタ内のワーカー・ノードを終了および置換する方法を確認します。

ノート

拡張クラスタを使用する場合、ワーカー・ノードを終了および置換するノードのみを循環できます。拡張クラスタおよび基本クラスタの使用を参照してください。

ノードをサイクルして終了し、仮想マシン・シェイプとベア・メタル・シェイプの両方でノードを置換できます。

ノードを循環して、管理対象ノードを終了および置換できます。

管理対象ノードの終了および置換は、ノードをホストしているコンピュート・インスタンスの問題を解決する最適な方法です。特に、既存のインスタンスを終了して、同じプロパティを持つ新しいインスタンスに置き換えるか、変更されたノード・プールのプロパティ(変更されたホストOSや変更されたコンピュート・シェイプなど)から導出された異なるプロパティを持つ新しいインスタンスに置き換えることで問題を解決できます。例:

  • インスタンスの起動後に発生した可能性のある構成ドリフトに対処するため。
  • 基礎となるハードウェア障害に対処するため。

Kubernetes Engineを使用すると、次の方法で、管理対象ノードをホストしているコンピュート・インスタンスを終了および置換できます:

  • この項で説明するように、管理対象ノードを含むノード・プールを循環させ、「ノードの置換」オプションを選択できます。
  • この項で説明するように、特定の管理対象ノードを循環および置換できます。
  • 特定の管理対象ノードを削除できます。ノード削除でノード・プールをスケール・ダウンすることを指定しない場合、削除するノードは新しいノードに置き換えられます(ワーカー・ノードの削除を参照)。

管理対象ノードをサイクルして終了および置換すると、Kubernetes Engineはワーカー・ノードを終了する前に、ワーカー・ノードを自動的にコード化およびドレインします。管理対象ノードをホストしているコンピュート・インスタンスが終了し、新しいインスタンスが作成されます。新しいインスタンスには、新しいOCIDとネットワーク・アドレスがあります。

ノード・プール内のすべての管理対象ノードを終了および置換するために循環する場合、新しいインスタンスが実行中状態になると、ノード・プール・プロパティに対する更新がノード・プール内のすべてのワーカー・ノードに適用されます。個々の管理対象ノードを終了および置換するために循環する場合、ノード・プール・プロパティに対する更新は置換ノードに適用されます。

ルーチン・ワーカー・ノードのメンテナンスを実行できるだけでなく、管理対象ノードの終了および置換も、次の場合に役立ちます:

ワーカー・ノードを終了および置換するために循環する場合は、次の考慮事項に注意してください。

  • 管理対象ノード・プールを選択して、その中のすべての管理対象ノードを循環、終了および置換できます。個々の管理対象ノードを循環、終了および置換することもできます。
  • 自己管理ノードを終了および置換するために循環することはできません。

ノード・プール内の管理対象ノードの終了および置換時のサービスの可用性およびコストのバランシング

ノード・プール内のすべての管理対象ノードを終了および置換するために循環する場合、Kubernetesエンジンはノード・プールに指定された「コードとドレイン」設定を使用し、次の2つの方法に従います。

  • 新規(追加)ノードを作成し、既存のノードを削除します: Kubernetes Engineは、プロパティが更新されたノード・プールに追加のノード(複数可)を追加します。追加ノードがアクティブになると、Kubernetesエンジンは既存のノードをコード化し、ノードをドレインし、ノード・プールからノードを削除します。この戦略では、サービスの可用性は維持されますが、コストは高くなります。
  • 既存のノードを削除してから新しいノードを作成: Kubernetes Engineは、既存のノード(または複数のノード)をコード化して使用不可にし、ノードをドレインし、ノード・プールからノードを削除します。ノードが削除されると、Kubernetes Engineは、削除されたノードを置き換えるために、ノード・プールに新しいノードを追加します。この戦略のコストは低くなりますが、サービスの可用性を損なう可能性があります。

サービスの可用性とコストに関する独自の要件を満たすようにKubernetes Engineの動作を調整するには、maxSurgemaxUnavailableの値を指定して、2つの戦略を制御し、バランスをとります。詳細は、「ノード・プールで管理対象ノードをサイクリングする場合のサービス可用性とコストのバランス」を参照してください。

ノードの終了および交換時のコード付けおよびドレイン

ノード・プールを選択し、そのワーカー・ノードを終了および置換することを指定すると、Kubernetes Engineは既存の管理対象ノードを自動的にコード化、ドレインおよび終了します。Kubernetesエンジンは、ノード・プールに指定された「コードとドレイン」オプションを使用します。

個々の管理対象ノードを選択し、終了および置換することを指定する場合は、「コードとドレイン」オプションを指定できます。管理対象ノードに指定した「コードとドレイン」オプションは、ノード・プールに指定した「コードとドレイン」オプションをオーバーライドします。

詳細は、「停止または終了前の管理対象ノードのコード化とドレイン」を参照してください。

ワーカー・ノードの終了と置換

  • 管理対象ノード・プール内のすべてのワーカー・ノードを終了および置換するには:

    1. ナビゲーション・メニューを開き、「開発者サービス」を選択します。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」を選択します。
    2. クラスタを含むコンパートメントを選択します、
    3. 「クラスタ」ページで、終了および置換するワーカー・ノードを含むクラスタの名前を選択します。
    4. 「リソース」で、「ノード・プール」を選択し、終了および置換するワーカー・ノードを含むノード・プールの名前を選択します。
    5. 「編集」を選択し、ノード・プールの未使用のプロパティを変更します(たとえば、キーがfooのKubernetesラベルと値barを指定)。

      変更するプロパティは無関係ですが、少なくとも1つのプロパティを変更する必要があります。

    6. 「ノード・プール」ページで、「サイクル・ノード」を選択します。

      推奨:アプリケーションに応じてポッド中断の予算を活用し、操作全体を通じて十分な数のレプリカ・ポッドが実行されていることを確認してください。詳細は、Kubernetesドキュメントのアプリケーションに対する中断予算の指定を参照してください。

    7. 「サイクル・ノード」ダイアログで:

      1. 「サイクリング・オプション」リストから「ノードの置換」を選択します。
      2. 次を指定して、更新するノードの数をパラレルに制御し、サービスの可用性とコストのバランスをとります。
        • 追加ノードの最大数またはパーセンテージ(maxSurge):操作中にノード・プールで一時的に許可する追加ノードの最大数(整数またはパーセンテージで表されます)。追加のノードは、ノード・プールの「ノード数」プロパティで指定された数を超えるノードです。追加ノードの数に整数を指定する場合は、「ノード数」の値より大きい数値を指定しないでください。
        • 使用できないノードの最大数または割合(maxUnavailable):操作中にノード・プールで使用できないノードの最大数(整数または割合で表されます)。使用できないノードの数に整数を指定する場合は、「ノード数」の値より大きい数値を指定しないでください。

        ノード・プール内の管理対象ノードの終了および置換時のサービスの可用性およびコストのバランスを参照してください。

      3. 「サイクル・ノード」を選択して操作を開始します。

      Kubernetesエンジンは、ノード・プールに指定された「コードとドレイン」オプションを使用して、ワーカー・ノードをコード化およびドレインします。詳細は、「停止または終了前の管理対象ノードのコード化とドレイン」を参照してください。

    8. 「ノード・プール詳細」ページで、関連する作業リクエストのステータスを表示して、操作の進行状況を監視します(「作業リクエスト詳細の取得」を参照)。

    特定の管理対象ノードを終了および置換するには:

    1. ナビゲーション・メニューを開き、「開発者サービス」を選択します。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」を選択します。
    2. クラスタを含むコンパートメントを選択します、
    3. 「クラスタ」ページで、再起動するワーカー・ノードを含むクラスタの名前を選択します。
    4. 「リソース」で、「ノード・プール」を選択し、終了および置換するワーカー・ノードを含むノード・プールの名前を選択します。
    5. 「リソース」で、「ノード」を選択します。
    6. 終了および置換するノードの横にある「アクション」メニューから「サイクル・ノード」を選択します。

    7. 「サイクル・ノード」ダイアログで:
      1. 「サイクリング・オプション」リストから「ノードの置換」を選択します。
      2. 終了および置換アクションを実行する前に、次の項目を指定してワーカー・ノードをコード化およびドレインするタイミングと方法を指定します。

        • 削除猶予期間(分):アクションを実行する前にワーカー・ノードをコード化およびドレインできる時間の長さ。デフォルト値(60分)を受け入れるか、または別の値を指定します。たとえば、ワーカー・ノードをコード化し、ワークロードから排出する時間を30分に許可できます。ワーカー・ノードをコード化およびドレインせずにすぐにアクションを実行するには、0分を指定します。
        • 猶予期間後に強制終了:ワーカー・ノードが正常にコード化および排出されていない場合でも、削除猶予期間の終了時にワーカー・ノードを終了するかどうか。デフォルトでは、このオプションは選択されていません。

        「停止または終了前の管理対象ノードのコード化とドレイン」を参照してください。

      3. 操作を開始するには、「サイクル・ノード」を選択します。
    8. 「ノード・プール詳細」ページで、関連する作業リクエストのステータスを表示して、操作の進行状況を監視します(「作業リクエスト詳細の取得」を参照)。

  • 管理対象ノード・プール内のすべてのワーカー・ノードを終了および置換するには

    管理対象ノード・プール内のすべてのワーカー・ノードを終了および置換するには、oci ce node-pool updateコマンドと必要なパラメータを使用します:

    oci ce node-pool update --node-pool-id <node-pool-ocid> --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"cycleModes\":\"INSTANCE_REPLACE\",\"maximumUnavailable\":<value>,\"maximumSurge\":<value>}" --<property-to-update> <new-value> [OPTIONS]

    ここで、--<property-to-update> <new-value>はノード・プール・プロパティの新しい値です。変更するプロパティは無関係ですが、少なくとも1つのプロパティを変更する必要があります。また、--node-pool-cycling-detailsパラメータに\"cycleModes\":\"INSTANCE_REPLACE\"を含めることはオプションです。これは、明示的に含めないと想定されるためです。

    例:

    oci ce node-pool update --node-pool-id ocid1.nodepool.oc1.iad.aaaaaaa______eya --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"maximumUnavailable\":1,\"maximumSurge\":1}" --initial-node-labels '[{"key": "foo", "value": "bar"}]'

    特定の管理対象ノードを終了および置換するには

    特定の管理対象ノードを終了して置換するには、oci ce node-pool delete-nodeコマンドおよび必須パラメータを使用してノードを削除し、--is-decrement-size falseを含めてノード・プールをスケール・ダウンしないことを指定します:

    oci ce node-pool delete-node --node-pool-id <node-pool-ocid> --node-id <node-ocid> --is-decrement-size false [OPTIONS]
  • OCI APIを使用して、管理対象ノード・プール内のすべてのワーカー・ノードを終了および置換するには:

    UpdateNodePool操作を実行して、管理対象ノード・プール内のすべてのワーカー・ノードを終了および置換します。

    OCI APIを使用して特定の管理対象ノードを終了および置換するには:

    DeleteNode操作を実行して、OCI APIを使用して特定の管理対象ノードを終了および置換します。