第6章 ノードヘルスチェックを使用したノードの修復


Node Health Check Operator を使用して、不健全なノードを特定できます。その後、Operator は他の修復プロバイダーを使用して異常なノードを修復します。

Node Health Check Operator は、次のような他の修復プロバイダーと併用することができます。

注記

Red Hat OpenShift Service on AWS (ROSA) クラスターにはマシンヘルスチェックがプリインストールされているため、Node Health Check Operator はそのような環境では機能しません。

Node Health Check Operator は "Rolling Stream" Operator であり、OpenShift Container Platform リリースの更新が非同期で利用できます。詳細は、Red Hat カスタマーポータルの OpenShift Operator ライフサイクル を参照してください。

6.1. Node Health Check Operator について

Node Health Check Operator は、クラスター内のノードの健全性を検出します。NodeHealthCheck コントローラーは、NodeHealthCheck カスタムリソース (CR) を作成します。これは、ノードの状態を判断するための一連の基準としきい値を定義します。

Node Health Check Operator は異常なノードを検出すると、修復プロバイダーをトリガーする修復 CR を作成します。たとえば、コントローラーは SelfNodeRemediation CR を作成し、Self Node Remediation Operator をトリガーして正常でないノードを修復します。

NodeHealthCheck CR は、修復プロバイダーとして自己ノード修復を使用した次の YAML ファイルに似ています。

apiVersion: remediation.medik8s.io/v1alpha1
kind: NodeHealthCheck
metadata:
  name: nodehealthcheck-sample
spec:
  minHealthy: 51% 
1

  pauseRequests: 
2

    - <pause-test-cluster>
  remediationTemplate: 
3

    apiVersion: self-node-remediation.medik8s.io/v1alpha1
    name: self-node-remediation-resource-deletion-template
    namespace: openshift-workload-availability
    kind: SelfNodeRemediationTemplate
  escalatingRemediations: 
4

    - remediationTemplate:
        apiVersion: self-node-remediation.medik8s.io/v1alpha1
        name: self-node-remediation-resource-deletion-template
        namespace: openshift-workload-availability
        kind: SelfNodeRemediationTemplate
    order: 1
    timeout: 300s
  selector: 
5

    matchExpressions:
      - key: node-role.kubernetes.io/worker
        operator: Exists
  unhealthyConditions: 
6

    - type: Ready
      status: "False"
      duration: 300s 
7

    - type: Ready
      status: Unknown
      duration: 300s 
8
Copy to Clipboard Toggle word wrap
1
修復プロバイダーがターゲットプール内のノードを同時に修復するために必要な正常なノードの数 (パーセンテージまたは数) を指定します。正常なノードの数が minHealthy で設定された制限以上の場合、修復が行われます。デフォルト値は 51% です。
2
新しい修復が開始されないようにし、進行中の修復を継続できるようにします。デフォルト値は空です。ただし、修復を一時停止する原因を特定する文字列の配列を入力できます。たとえば、pause-test-cluster
注記

アップグレードプロセス中に、クラスター内のノードが一時的に使用できなくなり、異常として識別される場合があります。ワーカーノードの場合、オペレーターはクラスターがアップグレード中であることを検出すると、新しい異常なノードの修正を停止して、そのようなノードが再起動しないようにします。

3
修復プロバイダーからの修復テンプレートを指定します。たとえば、Self Node Remediation Operator のようになります。remediationTemplateescalatingRemediation と相互排他的です。
4
順序フィールドとタイムアウトフィールドを含む RemediationTemplate のリストを指定します。正常なノードを取得するには、このフィールドを使用して複数の修復を順序付けし、設定します。この戦略により、成功しない可能性のある単一の修復に依存するのではなく、正常なノードを取得できる可能性が高まります。order フィールドは、修復が呼び出される順序を決定します (低い順序 = 早い呼び出し)。timeout フィールドは、次の修復がいつ呼び出されるかを決定します。escalatingRemediationremediationTemplate と相互排他的です。
注記

escalatingRemediations を使用すると、修復プロバイダーである Self Node Remediation Operator と Fence Agents Remediation Operator を、異なる remediationTemplate 設定で複数回使用できます。ただし、異なる remediationTemplate 設定で同じ Machine Deletion Remediation 設定を使用することはできません。

5
チェックするラベルまたは式に一致する selector を指定します。1 つの CR でコントロールプレーンノードとワーカーノードの両方を選択しないでください。
6
ノードが異常と見なされるかどうかを決定する条件のリストを指定します。
7 8
ノード条件のタイムアウト期間を指定します。タイムアウトの期間中に条件が満たされた場合、ノードは修正されます。タイムアウトが長いと、異常なノードのワークロードで長期間のダウンタイムが発生する可能性があります。

NodeHealthCheck CR は、修復プロバイダーとして metal3 を使用した、次の YAML ファイルに似ています。

apiVersion: remediation.medik8s.io/v1alpha1
kind: NodeHealthCheck
metadata:
  name: nhc-worker-metal3
spec:
  minHealthy: 30%
  remediationTemplate:
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: Metal3RemediationTemplate
    name: metal3-remediation
    namespace: openshift-machine-api
  selector:
    matchExpressions:
    - key: node-role.kubernetes.io/worker
      operator: Exists
  unhealthyConditions:
  - duration: 300s
    status: 'False'
    type: Ready
  - duration: 300s
    status: 'Unknown'
    type: Ready
Copy to Clipboard Toggle word wrap
注記

matchExpressions は例です。特定のニーズに基づいてマシングループをマッピングする必要があります。

Metal3RemediationTemplate は、修復プロバイダーとして metal3 を使用した、次の YAML ファイルに似ています。

apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Metal3RemediationTemplate
metadata:
  name: metal3-remediation
  namespace: openshift-machine-api
spec:
  template:
    spec:
      strategy:
        retryLimit: 1
        timeout: 5m0s
        type: Reboot
Copy to Clipboard Toggle word wrap
注記

NodeHealthCheck CR の作成に加えて、Metal3RemediationTemplate も作成する必要があります。

6.1.1. Node Health Check Operator のワークフローを理解する

ノードが異常であると識別されると、Node Health Check Operator は他にいくつのノードが異常であるかをチェックします。健康なノードの数が NodeHealthCheck CR の minHealthy フィールドで指定された量を超えた場合、コントローラーは、修復プロバイダーによって外部の修復テンプレートで提供される詳細から修復 CR を作成します。修復後、kubelet はノードのヘルスステータスを更新します。

ノードが正常になると、コントローラーは外部修復テンプレートを削除します。

6.1.2. ノードのヘルスチェックによるマシンヘルスチェックの競合

ノードヘルスチェックとマシンヘルスチェックの両方がデプロイメントされている場合、ノードヘルスチェックはマシンヘルスチェックとの競合を回避します。

注記

Red Hat OpenShift は machine-api-termination-handler をデフォルトの MachineHealthCheck リソースとしてデプロイします。

次のリストは、ノードヘルスチェックとマシンヘルスチェックがデプロイメントされたときのシステムの動作をまとめたものです。

  • デフォルトのマシンヘルスチェックのみが存在する場合、ノードヘルスチェックは引き続き異常なノードを識別します。ただし、ノードヘルスチェックは、Terminating 状態の異常なノードを無視します。デフォルトのマシンヘルスチェックは、異常なノードを Terminating 状態で処理します。

    ログメッセージの例

    INFO MHCChecker	ignoring unhealthy Node, it is terminating and will be handled by MHC	{"NodeName": "node-1.example.com"}
    Copy to Clipboard Toggle word wrap

  • デフォルトのマシンヘルスチェックが変更された場合 (たとえば、unhealthyConditionsReady の場合)、または追加のマシンヘルスチェックが作成された場合、ノードヘルスチェックは無効になります。

    ログメッセージの例

    INFO controllers.NodeHealthCheck disabling NHC in order to avoid conflict with custom MHCs configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}
    Copy to Clipboard Toggle word wrap

  • ここでも、デフォルトのマシンヘルスチェックのみが存在する場合、ノードヘルスチェックが再度有効になります。

    ログメッセージの例

    INFO controllers.NodeHealthCheck re-enabling NHC, no conflicting MHC configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}
    Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat