2.5. Self Node Remediation Operator の設定

Self Node Remediation Operator は、SelfNodeRemediationConfig CR と SelfNodeRemediationTemplate カスタムリソース定義 (CRD) を作成します。

2.5.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 ファイルのようになります。

apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediationConfig
metadata:
  name: self-node-remediation-config
  namespace: openshift-operators
spec:
  safeTimeToAssumeNodeRebootedSeconds: 180 1
  watchdogFilePath: /dev/watchdog 2
  isSoftwareRebootEnabled: true 3
  apiServerTimeout: 15s 4
  apiCheckInterval: 5s 5
  maxApiErrorThreshold: 3 6
  peerApiServerTimeout: 5s 7
  peerDialTimeout: 5s 8
  peerRequestTimeout: 5s 9
  peerUpdateInterval: 15m 10
1
存続しているピアのタイムアウト期間を指定します。その後、オペレーターは異常なノードが再起動されたと見なすことができます。オペレーターは、この値の下限を自動的に計算します。ただし、ノードごとにウォッチドッグタイムアウトが異なる場合は、この値をより高い値に変更する必要があります。
2
ノード内のウォッチドッグデバイスのファイルパスを指定します。ウォッチドッグデバイスへの誤ったパスを入力すると、Self Node Remediation Operator がソフトドッグデバイスのパスを自動的に検出します。

ウォッチドッグデバイスが使用できない場合、SelfNodeRemediationConfig CR はソフトウェアの再起動を使用します。

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"}

2.5.2. 自己ノード修復テンプレートの設定を理解する

Self Node Remediation Operator は、SelfNodeRemediationTemplate カスタムリソース定義 (CRD) も作成します。この CRD は、ノードの修復ストラテジーを定義します。次の修復戦略が利用可能です。

ResourceDeletion
この修復戦略では、ノードオブジェクトではなく、ノード上の Pod と関連するボリュームアタッチメントが削除されます。このストラテジーは、ワークロードをより迅速に復元するのに役立ちます。ResourceDeletion は、デフォルトの修復戦略です。
NodeDeletion
この修復戦略は推奨されておらず、将来のリリースで削除される予定です。現在のリリースでは、NodeDeletion 戦略が選択されている場合でも、ResourceDeletion 戦略が使用されます。

Self Node Remediation Operator は、ResourceDeletion 修復ストラテジーが使用するストラテジー self-node-remediation-resource-deletion-templateSelfNodeRemediationTemplate CR を作成します。

SelfNodeRemediationTemplate CR は以下の YAML ファイルのようになります。

apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediationTemplate
metadata:
  creationTimestamp: "2022-03-02T08:02:40Z"
  name: self-node-remediation-<remediation_object>-deletion-template 1
  namespace: openshift-operators
spec:
  template:
    spec:
      remediationStrategy: <remediation_strategy>  2
1
修復ストラテジーに基づいて修復テンプレートのタイプを指定します。<remediation_object>リソース または node のいずれかに置き換えます (例: self-node-remediation-resource-deletion-template)。
2
修復ストラテジーを指定します。修復ストラテジーは ResourceDeletion です。