クラスタ内のノードの追加と削除

ベアメタル版 Anthos クラスタでは、クラスタのノードプール定義を編集することで、クラスタ内のノードの追加または削除を行います。定義の変更には kubectl コマンドを使用します。

ベアメタル版 Anthos クラスタには、コントロール プレーン ノードプール、ロードバランサ ノードプール、ワーカー ノードプールの 3 種類のノードプールがあります。コントロール プレーンとロードバランサのノードは、関連付けられているクラスタ リソースの定義内で編集します。一方、ワーカー ノードプールの定義は直接編集します。

ノード ステータスの表示

ノードのステータスとそれに対応するノードプールは、kubectl get コマンドを使用して表示できます。

たとえば、次のコマンドは、クラスタの名前空間 my-cluster のノードプールのステータスを表示します。

  kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io
  

次のような結果が表示されます。

  NAME                    READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
  my-cluster              3       0             0         0                  0
  my-cluster-lb           2       0             0         0                  0
  np1                     3       0             0         0                  0

クラスタの診断の詳細については、クラスタの診断とリセットをご覧ください。

ノードの変更

ほとんどのノードの変更はクラスタ構成ファイルで指定され、クラスタに適用されます。クラスタ構成ファイルを、クラスタを更新するプライマリ ソースとして使用することをおすすめします。トラブルシューティングの目的で、変更を追跡するために構成ファイルをバージョン管理システムに保存することをおすすめします。なお、bmctl update コマンドはスタンドアロン クラスタでのみ使用できます。管理クラスタ、ユーザー クラスタ、ハイブリッド クラスタの場合は、kubectl apply を使用してノードプールの変更でクラスタを更新します。

Anthos clusters on bare metal クラスタの構成ファイルには、認証情報を含むヘッダー セクションが含まれています。認証情報エントリと残りの構成ファイルは有効な YAML ですが、クラスタ リソースでは認証情報エントリは無効です。kubectl apply を使用する前に、認証情報キーのパスエントリ(gcrKeyPathsshPrivateKeyPath など)を削除します。認証情報の更新には bmctl update credentials を使用します。

または、kubectl edit を使用してクラスタ リソースを直接変更することもできます。例:

  kubectl edit cluster -n CLUSTER_NAMESPACE CLUSTER_NAME

以降のセクションでは、特定のノードタイプを更新する際の重要な相違について説明します。

コントロール プレーンとロードバランサのノード

ベアメタル版 Anthos クラスタ用のコントロール プレーンとロードバランサのノードプール仕様は特別なものです。これらの仕様で、重要なクラスタ リソースが宣言され管理されます。そのリソースの原本が、クラスタ構成ファイルのそれぞれのセクションです。

  • spec.controlPlane.nodePoolSpec
  • spec.LoadBalancer.nodePoolSpec

コントロール プレーンまたはロードバランサのノードを追加または削除するには、クラスタ構成ファイルの対応するセクションにある nodes の下に配置されているアドレスの配列を編集します。

高可用性(HA)構成では、コントロール プレーンが失敗しても他のコントロール プレーンがそれを引き継げるクォーラムを確立するために、コントロール プレーン ノードプールが奇数個必要(3 つ以上)になります。ノードのメンテナンスや交換によるノードの追加や削除で、ノード数が一時的に偶数になる場合でも、クォーラムが十分に確保されている限りデプロイは HA を維持します。

ワーカーノード

ワーカーノードは、kubectl コマンドを使用して直接追加や削除を行えます。ワーカー ノードプールには、目的のノードが 1 つ以上必要です。

次の例では、コマンドによってクラスタの名前空間の変数が my-clusternp1 という名前のノードプールを削除します。

  kubectl -n my-cluster delete nodepool np1
  

同様に、アドレスの spec.nodes 配列を編集することでノードプールのサイズを変更できます。

クラスタからノードを削除すると、まず、それらのノードの Pod がすべてドレインされます。Pod を他のノードで再スケジュールできない場合、ノードはクラスタから削除されません。ノードを削除すると、コントロール プレーンからノードが削除されるだけで、ノードのコンテンツはリセットされません。

次の kubectl edit コマンドを使用すると、クラスタの名前空間 my-cluster とノードプール np1 を編集し、変更を commit できます。

  kubectl -n my-cluster edit nodepool np1