ノードをメンテナンス モードにする

ノードの修復またはメンテナンスが必要な場合は、まずノードをメンテナンス モードにする必要があります。ノードをメンテナンス モードにすると、Pod / ワークロードがドレインされ、Pod のスケジューリングからノードが除外されます。メンテナンス モードでは、Pod トラフィックが中断されるリスクなしに、ノードを操作できます。

クラスタ構成ファイルの maintenanceBlocks で選択したノードの IP 範囲を指定して、メンテナンス モードにするノードを選択します。選択するノードは、準備完了状態で、クラスタで機能している必要があります。

ノードをメンテナンス モードにするには:

  1. クラスタ構成ファイルを編集して、メンテナンス モードにするノードを選択します。

    任意のエディタを使用して構成ファイルを編集するか、次のコマンドを実行して、クラスタのカスタム リソースを直接編集できます。

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    次のように置き換えます。

    • CLUSTER_NAMESPACE: クラスタの名前空間。
    • CLUSTER_NAME: クラスタの名前。
  2. メンテナンス モードにするノードの単一の IP アドレスかアドレス範囲を指定するため、クラスタ構成ファイルに maintenanceBlocks セクションを追加します。

    次のサンプルでは、IP アドレスの範囲を指定して複数のノードを選択する方法を示します。

    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    
  3. 更新したクラスタ構成を保存して適用します。

    ベアメタル版 Anthos クラスタで、ノードをメンテナンス モードにします。

  4. 次のコマンドを実行して、クラスタ内のノードのステータスを取得します。

    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 の場合、ノードはメンテナンス モードです。

  5. 次のコマンドを実行して、メンテナンス モードのノード数を取得します。

    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

メンテナンス モードからノードを削除するには:

  1. クラスタの構成ファイルを編集して、メンテナンス モードから削除するノードを消去します。

    任意のエディタを使用して構成ファイルを編集するか、次のコマンドを実行して、クラスタのカスタム リソースを直接編集できます。

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    次のように置き換えます。

    • CLUSTER_NAMESPACE: クラスタの名前空間。
    • CLUSTER_NAME: クラスタの名前。
  2. IP アドレスを編集してメンテナンス モードから特定のノードを削除するか、maintenanceBlocks セクションを削除してメンテナンス モードからすべてを削除します。

  3. 更新したクラスタ構成を保存して適用します。

  4. kubectl コマンドを使用して、ノードのステータスを確認します。