5.7. Node Health CheckOperator を使用したノードヘルスチェックのデプロイ
Node Health Check Operator を使用して、 NodeHealthCheck
コントローラーをデプロイします。コントローラーは、正常ではないノードを識別し、Poison PillOperator を使用して、正常ではないノードを修正します。
Node Health Check Operator は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat の実稼働環境におけるサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
5.7.1. ノードヘルスチェックオペレーターについて
Node Health Check Operator は、NodeHealthCheck
コントローラーをデプロイします。これにより、 NodeHealthCheck
カスタムリソース (CR) が作成されます。Node Health Check Operator は、デフォルトの修復プロバイダーとして Poison PillOperator もインストールします。
オペレーターは、コントローラーを使用して、クラスター内のノードの正常性を検出します。コントローラーは、 NodeHealthCheck
カスタムリソース (CR) を作成します。これは、ノードの状態を判断するための一連の基準としきい値を定義します。
ノードヘルスチェックが異常なノードを検出すると、修復プロバイダーをトリガーする修復 CR を作成します。たとえば、ノードヘルスチェックは PoisonPillRemediation
CR を作成します。これにより、Poison PillOperator が異常なノードを修復します。
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: poison-pill.medik8s.io/v1alpha1 name: group-x namespace: openshift-operators kind: PoisonPillRemediationTemplate selector: 4 matchExpressions: - key: node-role.kubernetes.io/worker operator: Exists unhealthyConditions: 5 - type: Ready status: "False" duration: 300s 6 - type: Ready status: Unknown duration: 300s 7
- 1
- ターゲットプールで同時に修復できるノードの量 (パーセンテージ) を指定します。正常なノードの数が
minHealthy
で設定された制限以上の場合、修復が行われます。デフォルト値は 51% です。 - 2
- 新しい修復が開始されないようにし、進行中の修復を継続できるようにします。デフォルト値は空です。ただし、修復を一時停止する原因を特定する文字列の配列を入力できます。たとえば、
pause-test-cluster
。注記アップグレードプロセス中に、クラスター内のノードが一時的に使用できなくなり、異常として識別される場合があります。ワーカーノードの場合、オペレーターはクラスターがアップグレード中であることを検出すると、新しい異常なノードの修正を停止して、そのようなノードが再起動しないようにします。
- 3
- 修復プロバイダーからの修復テンプレートを指定します。たとえば、ポイズンピルオペレーターから。
- 4
- チェックするラベルまたは式に一致する
selector
を指定します。デフォルト値は空で、すべてのノードが選択されます。 - 5
- ノードが異常と見なされるかどうかを決定する条件のリストを指定します。
- 6 7
- ノード条件のタイムアウト期間を指定します。タイムアウトの期間中に条件が満たされた場合、ノードは修正されます。タイムアウトが長いと、異常なノードのワークロードで長期間のダウンタイムが発生する可能性があります。
5.7.1.1. ノードヘルスチェックオペレーターのワークフローを理解する
ノードが異常であると識別されると、オペレーターは他にいくつのノードが異常であるかをチェックします。健康なノードの数が NodeHealthCheck
CR の minHealthy
フィールドで指定された量を超えた場合、コントローラーは、修復プロバイダーによって外部の修復テンプレートで提供される詳細から修復 CR を作成します。修復後、ノードのヘルスステータスはそれに応じて更新されます。
ノードが正常になると、コントローラーは外部修復テンプレートを削除します。
5.7.1.2. ノードのヘルスチェックによるマシンヘルスチェックの競合
ノードヘルスチェックとマシンヘルスチェックの両方が展開されている場合、ノードヘルスチェックはマシンヘルスチェックとの競合を回避します。
Open Shift Container Platform は、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"}
デフォルトのマシンヘルスチェックが変更された場合 (たとえば、
unhealthyConditions
がReady
の場合)、または追加のマシンヘルスチェックが作成された場合、ノードヘルスチェックは無効になります。ログメッセージの例
INFO controllers.NodeHealthCheck disabling NHC in order to avoid conflict with custom MHCs configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}
ここでも、デフォルトのマシンヘルスチェックのみが存在する場合、ノードヘルスチェックが再度有効になります。
ログメッセージの例
INFO controllers.NodeHealthCheck re-enabling NHC, no conflicting MHC configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}
5.7.2. Web コンソールを使用したノードヘルスチェックオペレーターのインストール
OpenShift Container Platform Web コンソールを使用して、ノードヘルスチェックオペレーターをインストールできます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub ページに移動します。 - Node Health Check Operator を検索し、Installをクリックします。
-
Operator が
openshift-operators
namespace にインストールされるように、Installation mode と namespace のデフォルトの選択を維持します。 - Install をクリックします。
検証
インストールが正常に行われたことを確認するには、以下を実行します。
-
Operators
Installed Operators ページに移動します。 -
Operator が
openshift-operators
の namespace 内に設置されていることと、その状態がSucceeded
となっていることを確認してください。
Operator が正常にインストールされていない場合、以下を実行します。
-
Operators
Installed Operators ページに移動し、 Status
列でエラーまたは失敗の有無を確認します。 -
Workloads
Podsページにナビゲートし、問題を報告している openshift-operators
プロジェクトの Pod のログを確認します。
5.7.3. CLI を使用したノードヘルスチェックオペレーターのインストール
OpenShift CLI( oc
) を使用して、ノードヘルスチェックオペレーターをインストールできます。
前提条件
-
OpenShift CLI (
oc
) をインストールしている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
ノードヘルスチェックオペレーターの
Namespace
カスタムリソース (CR) を作成します。Namespace
CR を定義し、YAML ファイルを保存します (例:node-health-check-namespace.yaml
)。apiVersion: v1 kind: Namespace metadata: name: openshift-operators
Namespace
CR を作成するには、次のコマンドを実行します。$ oc create -f node-health-check-namespace.yaml
OperatorGroup
を作成します。OperatorGroup
CR を定義し、YAML ファイルを保存します (例:node-health-check-operator-group.yaml
)。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: node-health-check-operator namespace: openshift-operators spec: targetNamespaces: - openshift-operators
OperatorGroup
CR を作成するには、次のコマンドを実行します。$ oc create -f node-health-check-operator-group.yaml
Subscription
CR を作成します。Subscription
CR を定義し、YAML ファイルを保存します (例:node-health-check-subscription.yaml
)。apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: node-health-check-operator namespace: openshift-operators spec: channel: alpha name: node-healthcheck-operator source: redhat-operators sourceNamespace: openshift-marketplace package: node-health-check-operator
Subscription
CR を作成するには、次のコマンドを実行します。$ oc create -f node-health-check-subscription.yaml
検証
CSV リソースを調べて、インストールが成功したことを確認します。
$ oc get csv -n openshift-operators
出力例
NAME DISPLAY VERSION REPLACES PHASE node-health-check-operator.v0.1.1 Node Health Check Operator 0.1.1 Succeeded
Node Health CheckOperator が稼働していることを確認します。
$ oc get deploy -n openshift-operators
出力例
NAME READY UP-TO-DATE AVAILABLE AGE node-health-check-operator-controller-manager 1/1 1 1 10d