6.7. Node Health CheckOperator を使用したノードヘルスチェックのデプロイ
Node Health Check Operator を使用して、 NodeHealthCheck
コントローラーをデプロイします。コントローラーは、正常ではないノードを識別し、Poison PillOperator を使用して、正常ではないノードを修正します。
Node Health Check Operator は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
6.7.1. ノードヘルスチェックオペレーターについて
Node Health Check Operator は、 NodeHealthCheck
コントローラーを使用して、クラスター内のノードの状態を検出します。NodeHealthCheck
コントローラーは、NodeHealthCheck
カスタムリソース (CR) を作成します。これは、ノードの状態を判断するための一連の基準としきい値を定義します。
Node Health Check Operator は、デフォルトの修復プロバイダーとして Poison PillOperator もインストールします。
Node Health Check Operator は異常なノードを検出すると、修復プロバイダーをトリガーする修復 CR を作成します。たとえば、コントローラーは PoisonPillRemediation
CR を作成します。これにより、Poison Pill 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: 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
- ノード条件のタイムアウト期間を指定します。タイムアウトの期間中に条件が満たされた場合、ノードは修正されます。タイムアウトが長いと、異常なノードのワークロードで長期間のダウンタイムが発生する可能性があります。
6.7.1.1. ノードヘルスチェックオペレーターのワークフローを理解する
ノードが異常であると識別されると、Node Health Check Operator は他にいくつのノードが異常であるかをチェックします。健康なノードの数が NodeHealthCheck
CR の minHealthy
フィールドで指定された量を超えた場合、コントローラーは、修復プロバイダーによって外部の修復テンプレートで提供される詳細から修復 CR を作成します。修復後、kubelet はノードのヘルスステータスを更新します。
ノードが正常になると、コントローラーは外部修復テンプレートを削除します。
6.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"}
6.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 のログを確認します。
6.7.3. CLI を使用したノードヘルスチェックオペレーターのインストール
OpenShift CLI( oc
) を使用して、ノードヘルスチェックオペレーターをインストールできます。
独自の namespace に Operator をインストールするには、手順に従います。
openshift-operators
namespace に Operator をインストールするには、手順の 3 にスキップします。これは、新しい Namespace
カスタムリソース (CR) と OperatorGroup
CR を作成する必要がないためです。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。
手順
ノードヘルスチェックオペレーターの
Namespace
カスタムリソース (CR) を作成します。Namespace
CR を定義し、YAML ファイルを保存します (例:node-health-check-namespace.yaml
)。apiVersion: v1 kind: Namespace metadata: name: node-health-check
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: node-health-check
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: node-health-check 1 spec: channel: candidate 2 installPlanApproval: Manual 3 name: node-healthcheck-operator source: redhat-operators sourceNamespace: openshift-marketplace package: node-healthcheck-operator
- 1
- Node Health Check Operator をインストールする
Namespace
を指定します。Node Health Check Operator をopenshift-operators
namespace にインストールするには、Subscription
CR でopenshift-operators
を指定します。 - 2
- サブスクリプションのチャネル名を指定します。Node Health Check Operator の最新バージョンにアップグレードするには、サブスクリプションのチャネル名を
alpha
からcandidate
に手動で変更する必要があります。 - 3
- 指定したバージョンがカタログの新しいバージョンに置き換えられる場合に備えて、承認ストラテジーを Manual に設定します。これにより、新しいバージョンへの自動アップグレードが阻止され、最初の CSV のインストールが完了する前に手動での承認が必要となります。
Subscription
CR を作成するには、次のコマンドを実行します。$ oc create -f node-health-check-subscription.yaml
検証
CSV リソースを調べて、インストールが成功したことを確認します。
$ oc get csv -n openshift-operators
出力例
NAME DISPLAY VERSION REPLACES PHASE node-healthcheck-operator.v0.2.0. Node Health Check Operator 0.2.0 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
6.7.4. Node Health Check Operator に関するデータの収集
Node Health Check Operator に関するデバッグ情報を収集するには、must-gather
ツールを使用します。Node Health Check Operator の must-gather
イメージについては、特定の機能に関するデータの収集 を参照してください。
6.7.5. 関連情報
- Operator の更新チャネルの変更
- Node Health Check Operator は、制限されたネットワーク環境でサポートされています。詳細は、ネットワークが制限された環境での Operator Lifecycle Manager の使用 を参照してください。