ベアメタル版 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
を使用する前に、認証情報キーのパスエントリ(gcrKeyPath
や sshPrivateKeyPath
など)を削除します。認証情報の更新には 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-cluster
の np1
という名前のノードプールを削除します。
kubectl -n my-cluster delete nodepool np1
同様に、アドレスの spec.nodes
配列を編集することでノードプールのサイズを変更できます。
クラスタからノードを削除すると、まず、それらのノードの Pod がすべてドレインされます。Pod を他のノードで再スケジュールできない場合、ノードはクラスタから削除されません。ノードを削除すると、コントロール プレーンからノードが削除されるだけで、ノードのコンテンツはリセットされません。
次の kubectl edit
コマンドを使用すると、クラスタの名前空間 my-cluster とノードプール np1 を編集し、変更を commit できます。
kubectl -n my-cluster edit nodepool np1