クラスタ内のノードプールを追加または削除する

ベアメタル版 Anthos クラスタでは、ノードプールのカスタム リソースを作成または削除することで、クラスタのノードプールを追加または削除します。ノードプールの変更には、kubectl を使用します。

既存のクラスタに対しては、ワーカーノード プールの追加または削除のみ行なえます。クラスタの作成時に追加されたコントロール プレーンとロードバランサのノードプールは、クラスタの機能にとって欠かせないもので、削除できません。

ノードのステータスを確認する

ノードプールを追加または削除する前に、kubectl get を使用してノードと各ノードプールのステータスを確認します。コマンドとレスポンスの例などの詳細については、ノード ステータスの表示をご覧ください。

新しいノードプールを追加する

管理者クラスタに新しい nodepools.baremetal.cluster.gke.io リソースを作成すると、新しいノードプールを追加できます。たとえば、次の構成を指定して、ノード IP アドレスの 10.200.0.710.200.0.8 を含む「nodepool-new」という名前の新しいノードプールを追加します。

  apiVersion: baremetal.cluster.gke.io/v1
  kind: NodePool
  metadata:
    name: node-pool-new
    namespace: cluster-my-cluster
  spec:
    clusterName: my-cluster
    nodes:
    - address: 10.200.0.7
    - address: 10.200.0.8
    taints:
    - key: <key1>
      value: <value1>
      effect: NoSchedule
    labels:
      key1: <value1>
      key2: <value2>

ベアメタル版 Anthos クラスタ 1.7.0 以降のバージョンでは、NodePool.spec.taintsNodePool.spec.labels の構成はノードに合わせて調整されます。1.7.0 では、直接追加された taint とラベルはすべて削除されます。ベアメタル版 Anthos クラスタ 1.7.1 以降のバージョンでは、同期プロセス中に直接追加した taint とラベルがコントロール プレーンによって削除されなくなりました。

この調整ステップを省略するには、ノードに baremetal.cluster.gke.io/label-taint-no-sync アノテーションを付加します。

ノードプール リソースは、関連するクラスタと同じ名前空間に作成し、spec.clusterName フィールド内のクラスタ名を参照する必要があります。

構成を node-pool-new.yaml という名前のファイルに保存します。次のコマンドを使用して、管理クラスタに構成を適用します。必要に応じて、--kubeconfig フラグを使用して管理クラスタ構成を明示的に指定します。

  kubectl apply -f node-pool-new.yaml

ノードプールを削除する

ノードプールの削除には、kubectl delete を使用します。たとえば、前のセクションで追加したノードプール(node-pool-new)を削除するには、次のコマンドを使用します。

  kubectl -n cluster-my-cluster delete nodepool node-pool-new

クラスタ内のワーカーノードを削除すると、Pod が中断されることがあります。PodDisruptionBudget(PDB)がある場合は、ノードプールの削除がブロックされる可能性があります。Pod 停止ポリシーの詳細については、Pod 停止予算によってブロックされたノードの削除をご覧ください。