ノードの修復またはメンテナンスが必要な場合は、まずノードをメンテナンス モードにする必要があります。ノードをメンテナンス モードにすると、Pod / ワークロードがドレインされ、Pod のスケジューリングからノードが除外されます。メンテナンス モードでは、Pod トラフィックが中断されるリスクなしに、ノードを操作できます。
Anthos clusters on bare metal は、ノードをメンテナンス モードにする手段を提供します。この方法により、他のクラスタ コンポーネントで、ノードがメンテナンス モードであることを正しく認識できます。ノードをメンテナンス モードに配置すると、そのノードでは追加の Pod をスケジュールできず、既存の Pod は停止します。
メンテナンス モードを使用する代わりに、特定のノードで kubectl cordon
や kubectl drain
などの Kubernetes コマンドを手動で使用できます。Anthos clusters on bare metal 1.12.0(anthosBareMetalVersion: 1.12.0
)またはそれ以前のバージョンを実行する場合、メンテナンス モード手順を使用しない場合、ノードが閉鎖解除されるという既知の問題をご覧ください。
クラスタ構成ファイルの maintenanceBlocks
で選択したノードの IP 範囲を指定して、メンテナンス モードにするノードを選択します。選択するノードは、準備完了状態で、クラスタで機能している必要があります。
ノードをメンテナンス モードにするには:
クラスタ構成ファイルを編集して、メンテナンス モードにするノードを選択します。
任意のエディタを使用して構成ファイルを編集するか、次のコマンドを実行して、クラスタのカスタム リソースを直接編集できます。
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
次のように置き換えます。
CLUSTER_NAMESPACE
: クラスタの名前空間。CLUSTER_NAME
: クラスタの名前。
メンテナンス モードにするノードの単一の IP アドレスかアドレス範囲を指定するため、クラスタ構成ファイルに
maintenanceBlocks
セクションを追加します。次のサンプルでは、IP アドレスの範囲を指定して複数のノードを選択する方法を示します。
metadata: name: my-cluster namespace: cluster-my-cluster spec: maintenanceBlocks: cidrBlocks: - 172.16.128.1-172.16.128.64
更新したクラスタ構成を保存して適用します。
ベアメタル版 Anthos クラスタで、ノードをメンテナンス モードにします。
次のコマンドを実行して、クラスタ内のノードのステータスを取得します。
kubectl get nodes -n CLUSTER_NAME
結果は次のようになります。
NAME STATUS ROLES AGE VERSION user-anthos-baremetal-01 Ready master 2d22h v1.17.8-gke.16 user-anthos-baremetal-04 Ready <none> 2d22h v1.17.8-gke.16 user-anthos-baremetal-05 Ready,SchedulingDisabled <none> 2d22h v1.17.8-gke.16 user-anthos-baremetal-06 Ready <none> 2d22h v1.17.8-gke.16
ステータスが
SchedulingDisabled
の場合、ノードはメンテナンス モードです。次のコマンドを実行して、メンテナンス モードのノード数を取得します。
kubectl get nodepools
レスポンスは次の出力のようになります。
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN np1 3 0 0 1 0
このサンプルの
UNDERMAINTENANCE
列は、1 つのノードがメンテナンス モードであることを示しています。ベアメタル版 Anthos クラスタでは、ノードがメンテナンス モードになると、ノードに次の taint も追加されます。
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
メンテナンス モードからノードを削除するには:
クラスタの構成ファイルを編集して、メンテナンス モードから削除するノードを消去します。
任意のエディタを使用して構成ファイルを編集するか、次のコマンドを実行して、クラスタのカスタム リソースを直接編集できます。
kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
次のように置き換えます。
CLUSTER_NAMESPACE
: クラスタの名前空間。CLUSTER_NAME
: クラスタの名前。
IP アドレスを編集してメンテナンス モードから特定のノードを削除するか、
maintenanceBlocks
セクションを削除してメンテナンス モードからすべてを削除します。更新したクラスタ構成を保存して適用します。
kubectl
コマンドを使用して、ノードのステータスを確認します。