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


Web コンソール、CLI、または NodeMaintenance カスタムリソースを使用してノードをメンテナンス状態にします。

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

Compute Nodes 一覧で各ノードにある Options メニュー kebab を使用するか、または Node Details 画面の Actions コントロールを使用してノードをメンテナーンスモードに設定します。

手順

  1. OpenShift Virtualization コンソールで、 Compute Nodes をクリックします。
  2. この画面からノードをメンテナンスモードに設定できます。 これにより、1 つの画面で複数のノードに対してアクションを実行することがより容易になります。 または、Node Details 画面からノードをメンテナンスモードに設定することもできます。 この場合、選択されたノードの総合的な詳細情報を確認できます。

    • ノードの末尾の Options メニュー kebab をクリックし、Start Maintenance を選択します。
    • ノード名をクリックし、Node Details 画面を開いて Actions Stat Maintenance をクリックします。
  3. 確認ウィンドウで Start Maintenance をクリックします。

ノードは liveMigration エビクションストラテジーを持つ仮想マシンインスタンスのライブマイグレーションを行い、このノードはスケジュール対象外となります。このノードの他のすべての Pod および仮想マシンは削除され、別のノードで再作成されます。

11.2.2. CLI でのノードのメンテナンスモードへの設定

ノードをスケジュール対象外としてマークし、oc adm drain コマンドを使用してノードから Pod をエビクトまたは削除して、ノードをメンテナンスモードに設定します。

手順

  1. ノードにスケジュール対象外 (unschedulable) のマークを付けます。ノードのステータスが NotReady,SchedulingDisabled に切り替わります。

    $ oc adm cordon <node1>
  2. メンテナンスの準備のためにノードをドレイン (解放) します。ノードは、LiveMigratable の状態が True に設定され、 spec:evictionStrategy フィールドが LiveMigrate に設定された仮想マシンインスタンスのライブマイグレーションを行います。このノードの他のすべての Pod および仮想マシンは削除され、別のノードで再作成されます。

    $ oc adm drain <node1> --delete-emptydir-data --ignore-daemonsets=true --force
    • --delete-emptydir-data フラグは、emptyDir ボリュームを使用するノード上の仮想マシンインスタンスを削除します。これらのボリュームのデータは一時的なものであり、終了後に削除しても問題はありません。
    • --ignore-daemonsets=true フラグは、デーモンセットは無視され、Pod のエビクションが正常に続行されるようにします。
    • --force フラグは、レプリカセットまたはデーモンセットコントローラーによって管理されない Pod を削除するために必要です。

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 は、最新のエビクションエラーが存在する場合は、最新のエビクションエラーを記録します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.