6.6. Self Node Remediation Operator を使用したノードの修復
Self Node Remediation Operator を使用して、異常なノードを自動的に再起動できます。この修復戦略は、ステートフルアプリケーションと ReadWriteOnce(RWO) ボリュームのダウンタイムを最小限に抑え、一時的な障害が発生した場合に計算能力を回復します。
6.6.1. Self Node Remediation Operator について リンクのコピーリンクがクリップボードにコピーされました!
Self Node Remediation Operator はクラスターノードで実行され、正常でないと特定されるノードを再起動します。Operator は、MachineHealthCheck または NodeHealthCheck コントローラーを使用して、クラスター内のノードの正常性を検出します。ノードが異常であると識別されると、MachineHealthCheck または NodeHealthCheck リソースが SelfNodeRemediation カスタムリソース (CR) を作成し、Self NodeRemediationOperator をトリガーします。
SelfNodeRemediation CR は、次の YAML ファイルに似ています。
- 1
- 修復中に発生した最後のエラーを表示します。修復が正常に実行されるか、エラーが発生しない場合は、このフィールドは空になります。
Self Node Remediation Operator は、ステートフルアプリケーションのダウンタイムを最小限に抑え、一時的な障害が発生した場合に計算能力を回復します。この Operator は、IPMI や API などの管理インターフェイスに関係なくノードをプロビジョニングするために使用できます。また、クラスターのインストールタイプ (インストーラーでプロビジョニングされたインフラストラクチャーやユーザーでプロビジョニングされたインフラストラクチャーなど) に関係なく使用できます。
6.6.1.1. Self Node Remediation Operator 設定について リンクのコピーリンクがクリップボードにコピーされました!
Self Node Remediation Operator は、self-node-remediation-config という名前の SelfNodeRemediationConfigCR を作成します。CR は Self Node Remediation Operator の namespace に作成されます。
SelfNodeRemediationConfig CR の変更により、Self Node Remediation デーモンセットが再作成されます。
SelfNodeRemediationConfig CR は以下の YAML ファイルのようになります。
- 1
- 存続しているピアのタイムアウト期間を指定します。その後、オペレーターは異常なノードが再起動されたと見なすことができます。オペレーターは、この値の下限を自動的に計算します。ただし、ノードごとにウォッチドッグタイムアウトが異なる場合は、この値をより高い値に変更する必要があります。
- 2
- ノード内のウォッチドッグデバイスのファイルパスを指定します。ウォッチドッグデバイスへの誤ったパスを入力すると、Self Node Remediation Operator がソフトドッグデバイスのパスを自動的に検出します。
ウォッチドッグデバイスが使用できない場合、
SelfNodeRemediationConfigCR はソフトウェアの再起動を使用します。 - 3
- 異常なノードのソフトウェア再起動を有効にするかどうかを指定します。デフォルトでは、
is Software Reboot Enabledの値はtrueに設定されています。ソフトウェアの再起動を無効にするには、パラメーター値をfalseに設定します。 - 4
- 各 API サーバーとの接続を確認するためのタイムアウト期間を指定します。この期間が経過すると、Operator は修復を開始します。タイムアウト時間は 10 ミリ秒以上である必要があります。
- 5
- 各 API サーバーとの接続を確認する頻度を指定します。タイムアウト時間は 1 秒以上である必要があります。
- 6
- しきい値を指定します。このしきい値に達した後、ノードはピアへの接続を開始します。しきい値は、1 秒以上である必要があります。
- 7
- ピアが API サーバーに接続するためのタイムアウトの期間を指定します。タイムアウト時間は 10 ミリ秒以上である必要があります。
- 8
- ピアで接続を確立するためのタイムアウトの期間を指定します。タイムアウト時間は 10 ミリ秒以上である必要があります。
- 9
- ピアから応答を取得するためのタイムアウトの期間を指定します。タイムアウト時間は 10 ミリ秒以上である必要があります。
- 10
- IP アドレスなどのピア情報を更新する頻度を指定します。タイムアウト時間は 10 秒以上である必要があります。
Self NodeRemediationOperator によって作成された self-node-remediation-config CR を編集できます。ただし、Self Node Remediation Operator の新しい CR を作成しようとすると、次のメッセージがログに表示されます。
controllers.SelfNodeRemediationConfig
ignoring selfnoderemediationconfig CRs that are not named 'self-node-remediation-config'
or not in the namespace of the operator:
'openshift-operators' {"selfnoderemediationconfig":
"openshift-operators/selfnoderemediationconfig-copy"}
controllers.SelfNodeRemediationConfig
ignoring selfnoderemediationconfig CRs that are not named 'self-node-remediation-config'
or not in the namespace of the operator:
'openshift-operators' {"selfnoderemediationconfig":
"openshift-operators/selfnoderemediationconfig-copy"}
6.6.1.2. 自己ノード修復テンプレートの設定を理解する リンクのコピーリンクがクリップボードにコピーされました!
Self Node Remediation Operator は、SelfNodeRemediationTemplate カスタムリソース定義 (CRD) も作成します。この CRD は、ノードの修復ストラテジーを定義します。次の修復戦略が利用可能です。
ResourceDeletion-
この修復戦略では、ノードオブジェクトではなく、ノード上の Pod と関連するボリュームアタッチメントが削除されます。このストラテジーは、ワークロードをより迅速に復元するのに役立ちます。
ResourceDeletionは、デフォルトの修復戦略です。 NodeDeletion- この修復戦略により、ノードオブジェクトが削除されます。
Self Node Remediation Operator は、戦略ごとに次の SelfNodeRemediationTemplateCR を作成します。
-
ResourceDeletion修復戦略が使用するself-node-remediation-resource-deletion-template -
NodeDeletion修復戦略が使用するself-node-remediation-node-deletion-template
SelfNodeRemediationTemplate CR は以下の YAML ファイルのようになります。
6.6.1.3. ウォッチドッグデバイスについて リンクのコピーリンクがクリップボードにコピーされました!
ウォッチドッグデバイスは、次のいずれかになります。
- 電源が独立しているハードウェアデバイス
- 制御するホストと電源を共有するハードウェアデバイス
-
ソフトウェアまたは
softdogに実装された仮想デバイス
ハードウェアウォッチドッグデバイスと softdog デバイスには、それぞれ電子タイマーまたはソフトウェアタイマーがあります。これらのウォッチドッグデバイスは、エラー状態が検出されたときにマシンが安全な状態になるようにするために使用されます。クラスターは、ウォッチドッグタイマーを繰り返しリセットして、正常な状態にあることを証明する必要があります。このタイマーは、デッドロック、CPU の枯渇、ネットワークまたはディスクアクセスの喪失などの障害状態が原因で経過する可能性があります。タイマーが時間切れになると、ウォッチドッグデバイスは障害が発生したと見なし、デバイスがノードの強制リセットをトリガーします。
ハードウェアウォッチドッグデバイスは、softdog デバイスよりも信頼性があります。
6.6.1.3.1. ウォッチドッグデバイスを使用した Self Node Remediation Operator の動作の理解 リンクのコピーリンクがクリップボードにコピーされました!
Self Node Remediation Operator は、存在するウォッチドッグデバイスに基づいて修復戦略を決定します。
ハードウェアウォッチドッグデバイスが設定されて使用可能である場合、Operator はそれを修復に使用します。ハードウェアウォッチドッグデバイスが設定されていない場合、Operator は修復のために softdog デバイスを有効にして使用します。
システムまたは設定のどちらかで、いずれのウォッチドッグデバイスもサポートされていない場合、Operator はソフトウェアの再起動を使用してノードを修復します。
関連情報
6.6.2. Web コンソールを使用した Self Node Remediation Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールを使用して、Self Node Remediation Operator をインストールできます。
前提条件
-
cluster-admin権限を持つユーザーとしてログインしている。
手順
-
OpenShift Container Platform Web コンソールで、Operators
OperatorHub ページに移動します。 - 使用可能なオペレーターのリストから Self Node Remediation Operator を検索し、Install をクリックします。
-
Operator が
openshift-operatorsnamespace にインストールされるように、Installation mode と namespace のデフォルトの選択を維持します。 - Install をクリックします。
検証
インストールが正常に行われたことを確認するには、以下を実行します。
-
Operators
Installed Operators ページに移動します。 -
Operator が
openshift-operatorsの namespace に設置されていることと、その状態がSucceededになっていることを確認してください。
Operator が正常にインストールされていない場合、以下を実行します。
-
Operators
Installed Operators ページに移動し、 Status列でエラーまたは失敗の有無を確認します。 -
Workloads
Pod ページに移動し、問題を報告している self-node-remediation-controller-managerプロジェクトの Pod のログを確認します。
6.6.3. CLI を使用した Self Node Remediation Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift CLI (oc) を使用して、Self Node Remediation Operator をインストールできます。
Self Node Remediation Operator は、独自の namespace または openshift-operators namespace にインストールできます。
独自の namespace に Operator をインストールするには、手順に従います。
openshift-operators namespace に Operator をインストールするには、手順の 3 にスキップします。これは、新しい Namespace カスタムリソース (CR) と OperatorGroup CR を作成する必要がないためです。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
Self Node Remediation Operator の
Namespaceカスタムリソース (CR) を作成します。NamespaceCR を定義し、YAML ファイルを保存します (例:self-node-remediation-namespace.yaml)。apiVersion: v1 kind: Namespace metadata: name: self-node-remediation
apiVersion: v1 kind: Namespace metadata: name: self-node-remediationCopy to Clipboard Copied! Toggle word wrap Toggle overflow NamespaceCR を作成するには、次のコマンドを実行します。oc create -f self-node-remediation-namespace.yaml
$ oc create -f self-node-remediation-namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OperatorGroupを作成します。OperatorGroupCR を定義し、YAML ファイルを保存します (例:self-node-remediation-operator-group.yaml)。apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: self-node-remediation-operator namespace: self-node-remediation
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: self-node-remediation-operator namespace: self-node-remediationCopy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroupCR を作成するには、次のコマンドを実行します。oc create -f self-node-remediation-operator-group.yaml
$ oc create -f self-node-remediation-operator-group.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SubscriptionCR を作成します。SubscriptionCR を定義し、YAML ファイルを保存します (例:self-node-remediation-subscription.yaml)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Self Node Remediation Operator をインストールする
Namespaceを指定します。セルフノード修復 Operator をopenshift-operatorsnamespace にインストールするには、SubscriptionCR でopenshift-operatorsを指定します。 - 2
- 指定したバージョンがカタログの新しいバージョンに置き換えられる場合に備えて、承認ストラテジーを Manual に設定します。これにより、新しいバージョンへの自動アップグレードが阻止され、最初の CSV のインストールが完了する前に手動での承認が必要となります。
SubscriptionCR を作成するには、次のコマンドを実行します。oc create -f self-node-remediation-subscription.yaml
$ oc create -f self-node-remediation-subscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
CSV リソースを調べて、インストールが成功したことを確認します。
oc get csv -n self-node-remediation
$ oc get csv -n self-node-remediationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME DISPLAY VERSION REPLACES PHASE self-node-remediation.v.0.4.0 Self Node Remediation Operator v.0.4.0 Succeeded
NAME DISPLAY VERSION REPLACES PHASE self-node-remediation.v.0.4.0 Self Node Remediation Operator v.0.4.0 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow Self Node Remediation Operator が稼働していることを確認します。
oc get deploy -n self-node-remediation
$ oc get deploy -n self-node-remediationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY UP-TO-DATE AVAILABLE AGE self-node-remediation-controller-manager 1/1 1 1 28h
NAME READY UP-TO-DATE AVAILABLE AGE self-node-remediation-controller-manager 1/1 1 1 28hCopy to Clipboard Copied! Toggle word wrap Toggle overflow Self Node Remediation Operator が
SelfNodeRemediationConfigCR を作成していることを確認します。oc get selfnoderemediationconfig -n self-node-remediation
$ oc get selfnoderemediationconfig -n self-node-remediationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME AGE self-node-remediation-config 28h
NAME AGE self-node-remediation-config 28hCopy to Clipboard Copied! Toggle word wrap Toggle overflow それぞれの自己ノードの修復 Pod がスケジュールされ、各ワーカーノードで実行されていることを確認します。
oc get daemonset -n self-node-remediation
$ oc get daemonset -n self-node-remediationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE self-node-remediation-ds 3 3 3 3 3 <none> 28h
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE self-node-remediation-ds 3 3 3 3 3 <none> 28hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、コントロールプレーンノードではサポートされていません。
6.6.4. Self Node Remediation Operator を使用するためのマシンヘルスチェックの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、マシンヘルスチェックを Self Node Remediation Operator を修復プロバイダーとして使用するように設定します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。
手順
SelfNodeRemediationTemplateCR を作成します。SelfNodeRemediationTemplateCR を定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 修復ストラテジーを指定します。デフォルトのストラテジーは
ResourceDeletionです。
SelfNodeRemediationTemplateCR を作成するには、以下のコマンドを実行します。oc create -f <snr-name>.yaml
$ oc create -f <snr-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
MachineHealthCheckCR を作成し、SelfNodeRemediationTemplateCR を参照するよう更新します。MachineHealthCheckを定義または更新します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 修復テンプレートの詳細を指定します。
MachineHealthCheckCR を作成するには、次のコマンドを実行します。oc create -f <file-name>.yaml
$ oc create -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow MachineHealthCheckCR を更新するには、次のコマンドを実行します。oc apply -f <file-name>.yaml
$ oc apply -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.5. Self Node Remediation Operator のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
6.6.5.1. 一般的なトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
- 問題
- Self Node Remediation Operator の問題のトラブルシューティングが必要です。
- 解決方法
- Operator ログを確認してください。
6.6.5.2. デーモンセットの確認 リンクのコピーリンクがクリップボードにコピーされました!
- 問題
- Self Node Remediation Operator はインストールされていますが、デーモンセットはインストールされません。
- 解決方法
- エラーまたは警告がないか、オペレーターログを確認してください。
6.6.5.3. 失敗した修復 リンクのコピーリンクがクリップボードにコピーされました!
- 問題
- 不健康なノードは修正されませんでした。
- 解決方法
以下のコマンドを実行して、
SelfNodeRemediationCR が作成されていることを確認します。oc get snr -A
$ oc get snr -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow MachineHealthCheckコントローラーがノードが正常でない状態でSelfNodeRemediationCR を作成しなかった場合、MachineHealthCheckコントローラーのログを確認します。さらに、MachineHealthCheckCR に、修復テンプレートを使用するために必要な仕様が含まれていることを確認してください。SelfNodeRemediationCR が作成される場合、その名前が正常でないノードまたはマシンオブジェクトと一致することを確認します。
6.6.5.4. Operator をアンインストールした後でも、デーモンセットおよびその他の Self Node Remediation Operator リソースが存在する リンクのコピーリンクがクリップボードにコピーされました!
- 問題
- デーモンセット、設定 CR、修復テンプレート CR などの Self Node Remediation Operator リソースは、Operator をアンインストールした後も存在します。
- 解決方法
Self Node Remediation Operator リソースを削除するには、リソースタイプごとに次のコマンドを実行してリソースを削除します。
oc delete ds <self-node-remediation-ds> -n <namespace>
$ oc delete ds <self-node-remediation-ds> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete snrc <self-node-remediation-config> -n <namespace>
$ oc delete snrc <self-node-remediation-config> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete snrt <self-node-remediation-template> -n <namespace>
$ oc delete snrt <self-node-remediation-template> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.6. Self Node Remediation Operator に関するデータの収集 リンクのコピーリンクがクリップボードにコピーされました!
Self Node Remediation Operator に関するデバッグ情報を収集するには、must-gather ツールを使用します。Self Node Remediation Operator の must-gather イメージの詳細は、Gathering data about specific features を参照してください。