既存のノード・プールを新しいノード・プールに置換することによるアウトオブプレース・ワーカー・ノード更新の実行

Container Engine for Kubernetes (OKE)を使用して、元のノード・プールを新しいワーカー・ノードを持つ新しいノード・プールと必要なプロパティに置き換えることで、ノード・プール内のワーカー・ノードのプロパティを更新する方法を確認します。

ノード・プール内のワーカー・ノードのプロパティを更新するには、元のノード・プールを、必要なプロパティで新しいワーカー・ノードを持つ新しいノード・プールに置き換えます。

新しいノード・プールを作成し、必要なワーカー・ノード・プロパティを指定した後、新しいポッドが開始されないようにするために元のノード・プール内の既存のワーカー・ノードをドレインし、既存のポッドを削除します。その後、元のノード・プールを削除できます。新しいワーカー・ノードが新しいノード・プールで起動されると、指定したプロパティが表示されます。

コンソールの使用

新しいノード・プールを作成して、クラスタ内のノード・プールのアウトオブプレース更新を実行するには:

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」をクリックします。
  2. 作業する権限があるコンパートメントを選択します。
  3. 「クラスタ・リスト」ページで、ワーカー・ノード・プロパティを更新するクラスタの名前をクリックします。
  4. 「クラスタ」ページで、「ノード・プール」タブを表示し、「ノード・プールの追加」をクリックして新しいノード・プールを作成し、必要なワーカー・ノード・プロパティを指定します。

    別のKubernetesバージョンを指定する場合、指定するバージョンは、コントロール・プレーン・ノードで実行されているバージョンと互換性がある必要があります。新しいKubernetesバージョンへのクラスタのアップグレードを参照してください。

  5. 元のノード・プールのワーカー・ノードにアタッチされているラベルがあり、それらのラベルがセレクタで使用される場合(たとえば、ポッドを実行するノードを決定する場合)、kubectl label nodesコマンドを使用して、新しいノード・プールの新しいワーカー・ノードに同じラベルをアタッチします。Kubernetesのドキュメントの、ノードへのポッドの割当てを参照してください。
  6. 元のノード・プール内の最初のワーカー・ノードに対して、次のように入力して新しいポッドが開始されないようにし、既存のポッドを削除します:

    kubectl drain <node_name>

    詳細情報:

    推奨: アプリケーションに適したポッド中断予算を活用し、排出操作全体で十分な数のレプリカ・ポッドが実行されていることを確認します。

  7. 元のノード・プールからすべてのワーカー・ノードがドレインされるまで、ノード・プール内の残りの各ワーカー・ノードに対して前述のステップを繰り返します。

    元のノード・プールからすべてのワーカー・ノードがドレインされ、ポッドが新しいノード・プールのワーカー・ノードで実行されている場合は、元のノード・プールを削除できます。

  8. 「クラスタ」ページで、「ノード・プール」タブを表示し、元のノード・プールの横の「アクション」メニューから「ノード・プールの削除」を選択します。

    元のノード・プールおよびそのすべてのワーカー・ノードが削除されます。

CLIの使用

CLIの使用の詳細は、コマンド・ライン・インタフェース(CLI)を参照してください。CLIコマンドで使用できるフラグおよびオプションの完全なリストは、コマンドライン・リファレンスを参照してください。

「アウトオブプレース」ワーカー・ノードの更新を実行するには

まず、必要なワーカー・ノード・プロパティを使用して新しいノード・プールを作成します。

oci ce node-pool create \
--cluster-id <cluster-ocid> \
--name <node-pool-name> \
--node-image-id <image-ocid> \
--compartment-id <compartment-ocid> \
--kubernetes-version <version> \
--node-shape <shape> \
--placement-configs "[{\"availability-domain\":\"<domain-name>\", \"subnet-id\":\"<subnet-ocid>\"}]" \
--size <number-of-nodes> \
[OPTIONS]

次に、元のノード・プールの各ワーカー・ノードについて、各ワーカー・ノードを順番にドレインすることで、新しいポッドが開始されないようにし、既存のポッドを削除します。

kubectl drain <node_name>

最後に、元のノード・プールを削除します。

oci ce node-pool delete --node-pool-id <node-pool-ocid> [OPTIONS]

例:

oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaa____qea \
--name finance-node-pool \
--node-image-id oocid1.image.oc1.iad.aaa______vpq \
--compartment-id ocid1.compartment.oc1..aaa____fda \
--kubernetes-version v1.24.1 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"s__D:US-ASHBURN-AD-1\", \"subnet-id\":\"ocid1.subnet.oc1.iad.aaa______2sq\"}]" \
--size 1
kubectl drain 10.0.10.196
kubectl drain 10.0.10.18
kubectl drain 10.0.10.84
oci ce node-pool delete --node-pool-id ocid1.nodepool.oc1.iad.aaaaaaa______eya