5.3. ノードのメンテナンスモードへの設定

NodeMaintenance CR を使用して、Web コンソールまたは CLI からノードをメンテナンスモードにすることができます。

5.3.1. Web コンソールでのノードのメンテナンスモードへの設定

ノードをメンテナンスモードに設定するために、Web コンソールを使用して NodeMaintenance カスタムリソース (CR) を作成できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。
  • OperatorHub から Node Maintenance Operator をインストールします。

手順

  1. Web コンソールの Administrator パースペクティブで、OperatorsInstalled Operators に移動します。
  2. Operator リストから Node Maintenance Operator を選択します。
  3. Node Maintenance タブで Create NodeMaintenance をクリックします。
  4. Create NodeMaintenance ページで、Form view または YAML view t を選択して NodeMaintenance CR を設定します。
  5. 設定した NodeMaintenance CR を適用するには、Create をクリックします。

検証

Node Maintenance タブで Status 列を調べ、そのステータスが Succeeded であることを確認します。

5.3.2. CLI を使用してノードをメンテナンスモードに設定する場合

NodeMaintenance カスタムリソース (CR) を使用して、ノードをメンテナンスモードにすることができます。NodeMaintenance CR を適用すると、許可されているすべての Pod が削除され、ノードがスケジュール不能になります。エビクトされた Pod は、クラスター内の別のノードに移動するようにキューに置かれます。

前提条件

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

手順

  1. 次の NodeMaintenance CR を作成し、ファイルを nodemaintenance-cr.yaml として保存します。

    apiVersion: nodemaintenance.medik8s.io/v1beta1
    kind: NodeMaintenance
    metadata:
      name: nodemaintenance-cr  1
    spec:
      nodeName: node-1.example.com 2
      reason: "NIC replacement" 3
    1
    ノードメンテナンス CR の名前。
    2
    メンテナンスモードにするノードの名前。
    3
    メンテナンスの理由を説明するプレーンテキスト。
  2. 次のコマンドを実行して、ノードメンテナンス CR を適用します。

    $ oc apply -f nodemaintenance-cr.yaml

検証

  1. 次のコマンドを実行して、メンテナンスタスクの進捗状況を確認します。

    $ oc describe node <node-name>

    <node-name> はノードの名前です。たとえば、node-1.example.com などになります。

  2. 出力例を確認します。

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

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

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

前提条件

  • Red Hat OpenShift CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  • 以下のコマンドを実行して、現在のノードのメンテナンスタスクのステータスを確認します (例: NodeMaintenance CR または nm)。

    $ oc get nm -o yaml

    出力例

    apiVersion: v1
    items:
    - apiVersion: nodemaintenance.medik8s.io/v1beta1
      kind: NodeMaintenance
      metadata:
    ...
      spec:
        nodeName: node-1.example.com
        reason: Node maintenance
      status:
        drainProgress: 100   1
        evictionPods: 3   2
        lastError: "Last failure message" 3
        lastUpdate: "2022-06-23T11:43:18Z" 4
        phase: Succeeded
        totalpods: 5 5
    ...

    1
    ノードのドレインの完了率。
    2
    エビクションにスケジュールされる Pod 数。
    3
    最新のエビクションエラー (ある場合)。
    4
    ステータスが最後に更新された時刻。
    5
    ノードがメンテナンスモードに入る前の Pod の総数。