11.2.3. NodeMaintenance カスタムリソースを使用したノードのメンテナンスモードへの設定

NodeMaintenance カスタムリソース (CR) を使用してノードをメンテナンスモードにできます。NodeMaintenance CR を適用する場合、許可されるすべての Pod はエビクトされ、ノードはシャットダウンします。エビクトされた Pod は、クラスター内の別のノードに移動するようにキューに置かれます。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールします。
  • cluster-admin 権限を持つユーザーとしてクラスターにログインします。

手順

  1. 以下のノードメンテナンス CR を作成し、そのファイルを nodemaintenance-cr.yaml として保存します。

    apiVersion: nodemaintenance.kubevirt.io/v1beta1
    kind: NodeMaintenance
    metadata:
      name: maintenance-example  1
    spec:
      nodeName: node-1.example.com 2
      reason: "Node maintenance" 3
    1
    ノードのメンテナンス CR 名
    2
    メンテナンスモードに設定するノードの名前
    3
    メンテナンスの理由のプレーンテキストの説明
  2. 以下のコマンドを実行してノードのメンテナンススケジュールを適用します。

    $ oc apply -f nodemaintenance-cr.yaml
  3. 以下のコマンドを実行して、<node-name> をノードの名前に置き換えて、メンテナンスタスクの進捗を確認します。

    $ oc describe node <node-name>

    出力例

    Events:
      Type     Reason                     Age                   From     Message
      ----     ------                     ----                  ----     -------
      Normal   NodeNotSchedulable         61m                   kubelet  Node node-1.example.com status is now: NodeNotSchedulable

11.2.3.1. 現在の NodeMaintenance CR タスクのステータスの確認

現在の NodeMaintenance CR タスクのステータスを確認できます。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールします。
  • cluster-admin 権限を持つユーザーとしてログインすること。

手順

  • 以下のコマンドを実行して、現在のノードのメンテナンスタスクのステータスを確認します。

    $ oc get NodeMaintenance -o yaml

    出力例

    apiVersion: v1
    items:
    - apiVersion: nodemaintenance.kubevirt.io/v1beta1
      kind: NodeMaintenance
      metadata:
    ...
      spec:
        nodeName: node-1.example.com
        reason: Node maintenance
      status:
        evictionPods: 3   1
        pendingPods:
        - pod-example-workload-0
        - httpd
        - httpd-manual
        phase: Running
        lastError: "Last failure message" 2
        totalpods: 5
    ...

    1
    evictionPods はエビクションにスケジュールされる Pod 数です。
    2
    lastError は、最新のエビクションエラーが存在する場合は、最新のエビクションエラーを記録します。