5.6. ポイズンピルオペレーターによるノードの修復


Poison Pill Operator を使用して、異常なノードを自動的に再起動できます。この修復戦略は、ステートフルアプリケーションと ReadWriteOnce(RWO) ボリュームのダウンタイムを最小限に抑え、一時的な障害が発生した場合に計算能力を回復します。

5.6.1. ポイズンピルオペレーターについて

Poison Pill Operator はクラスターノードで実行され、異常と識別されたノードを再起動します。オペレーターは、 MachineHealthCheck コントローラーを使用して、クラスター内のノードの状態を検出します。ノードが異常であると識別されると、MachineHealthCheck リソースは PoisonPillRemediation カスタムリソース (CR) を作成し、 Poison PillOperator をトリガーします。

ポイズンピルオペレーターは、次の機能を提供します。

  • ステートフルアプリケーションのダウンタイムを最小限に抑え、一時的な障害が発生した場合に計算能力を回復します。
  • ノードをプロビジョニングするための IPMI や API などの管理インターフェイスから独立しています。

5.6.1.1. ポイズンピルオペレーターの設定を理解する

Poison Pill Operator は、 PoisonPillConfig の名前空間に poison-pill-config という名前の PoisonPillConfigCR を作成します。この CR を編集できます。ただし、Poison PillOperator の新しい CR を作成することはできません。

PoisonPillConfig CR を変更すると、PoisonPill デーモンセットが再作成されます。

PoisonPillConfig CR は、次の YAML ファイルに似ています。

apiVersion: poison-pill.medik8s.io/v1alpha1
kind: PoisonPillConfig
metadata:
  name: poison-pill-config
  namespace: openshift-operators
spec:
  safeTimeToAssumeNodeRebootedSeconds: 180 
1

  watchdogFilePath: /test/watchdog1 
2
1
存続しているピアのタイムアウト期間を指定します。その後、オペレーターは異常なノードが再起動されたと見なすことができます。オペレーターは、この値の下限を自動的に計算します。ただし、ノードごとにウォッチドッグタイムアウトが異なる場合は、この値をより高い値に変更する必要があります。
2
ノード内のウォッチドッグデバイスのファイルパスを指定します。ウォッチドッグデバイスが使用できない場合、 PoisonPillConfigCR はソフトウェアの再起動を使用します。

5.6.2. Web コンソールを使用した PoisonPillOperator のインストール

OpenShift Container Platform Web コンソールを使用して、Poison PillOperator をインストールできます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. OpenShift Container Platform Web コンソールで、Operators OperatorHub ページに移動します。
  2. 使用可能なオペレーターのリストからポイズンピルオペレーターを検索し、Installをクリックします。
  3. Installation modenamespaceのデフォルトの選択を維持して、Operator が poison-pill 名前空間にインストールされるようにします。
  4. Install をクリックします。

検証

インストールが正常に行われたことを確認するには、以下を実行します。

  1. Operators Installed Operators ページに移動します。
  2. オペレータは poison-pill 名前空間内に設置され、そのステータスが Succeeded になったことを確認してください。

Operator が正常にインストールされていない場合、以下を実行します。

  1. Operators Installed Operators ページに移動し、Status 列でエラーまたは失敗の有無を確認します。
  2. Workloads Podsページに移動し、問題を報告している poison-pill-controller-manager プロジェクトの Pod のログを確認します。

5.6.3. CLI を使用した PoisonPillOperator のインストール

OpenShift CLI(oc ) を使用して、Poison PillOperator をインストールできます。

前提条件

  • OpenShift CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. Poison Pill Operator の Namespace カスタムリソース (CR) を作成します。

    1. NamespaceCR を定義し、YAML ファイルを保存します (例: poison-pill-namespace.yaml)。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: poison-pill
    2. NamespaceCR を作成するには、次のコマンドを実行します。

      $ oc create -f poison-pill-namespace.yaml
  2. OperatorGroup を作成します。

    1. OperatorGroup CR を定義し、YAML ファイルを保存します (例: poison-pill-operator-group.yaml )。

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: poison-pill-manager
        namespace: poison-pill
      spec:
        targetNamespaces:
        - poison-pill
    2. OperatorGroup CR を作成するには、次のコマンドを実行します。

      $ oc create -f poison-pill-operator-group.yaml
  3. SubscriptionCR を作成します。

    1. SubscriptionCR を定義し、YAML ファイル (poison-pill-subscription.yaml など) を保存します。

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
          name: poison-pill-manager
          namespace: poison-pill
      spec:
          channel: alpha
          name: poison-pill-manager
          source: redhat-operators
          sourceNamespace: openshift-marketplace
          package: poison-pill-manager
    2. SubscriptionCR を作成するには、次のコマンドを実行します。

      $ oc create -f poison-pill-subscription.yaml

検証

  1. CSV リソースを調べて、インストールが成功したことを確認します。

    $ oc get csv -n poison-pill

    出力例

    NAME                   DISPLAY                 VERSION   REPLACES    PHASE
    poison-pill.v0.1.4     Poison Pill Operator    0.1.4                 Succeeded

  2. Poison PillOperator が稼働していることを確認します。

    $ oc get deploy -n poison-pill

    出力例

    NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
    poison-pill-controller-manager       1/1     1            1           10d

  3. Poison PillOperator が PoisonPillConfigCR を作成したことを確認します。

    $ oc get PoisonPillConfig -n poison-pill

    出力例

    NAME                 AGE
    poison-pill-config   10d

  4. 各ポイズンピル Pod がスケジュールされ、各ワーカーノードで実行されていることを確認します。

    $ oc get daemonset -n poison-pill

    出力例

    NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    poison-pill-ds   2         2         2       2            2           <none>          10d

    注記

    このコマンドは、コントロールプレーンノードではサポートされていません。

5.6.4. ポイズンピルオペレーターを使用するためのマシンヘルスチェックの設定

次の手順を使用して、Poison PillOperator を修復プロバイダーとして使用するようにマシンヘルスチェックを設定します。

前提条件

  • OpenShift CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. PoisonPillRemediationTemplate CR を作成します。

    1. PoisonPillRemediationTemplate を定義します。

      apiVersion: poison-pill.medik8s.io/v1alpha1
      kind: PoisonPillRemediationTemplate
      metadata:
        namespace: openshift-machine-api
        name: poisonpillremediationtemplate-sample
      spec:
        template:
          spec: {}
    2. PoisonPillRemediationTemplate CR を作成するには、次のコマンドを実行します。

      $ oc create -f <ppr-name>.yaml
  2. PoisonPillRemediationTemplate CR を指すように MachineHealthCheckCR を作成または更新します。

    1. MachineHealthCheck を定義または更新します。

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineHealthCheck
      metadata:
        name: machine-health-check
        namespace: openshift-machine-api
      spec:
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-machine-role: "worker"
            machine.openshift.io/cluster-api-machine-type: "worker"
        unhealthyConditions:
        - type:    "Ready"
          timeout: "300s"
          status: "False"
        - type:    "Ready"
          timeout: "300s"
          status: "Unknown"
        maxUnhealthy: "40%"
        nodeStartupTimeout: "10m"
        remediationTemplate: 
      1
      
          kind: PoisonPillRemediationTemplate
          apiVersion: poison-pill.medik8s.io/v1alpha1
          name: <poison-pill-remediation-template-sample>
      1
      修復テンプレートの詳細を指定します。
    2. MachineHealthCheck CR を作成するには、次のコマンドを実行します。

      $ oc create -f <file-name>.yaml
    3. MachineHealthCheck CR を更新するには、次のコマンドを実行します。

      $ oc apply -f <file-name>.yaml

5.6.5. ポイズンピルオペレーターのトラブルシューティング

5.6.5.1. 一般的なトラブルシューティング

問題
ポイズンピルオペレーターの問題をトラブルシューティングしたいと考えています。
解決策
オペレーターログを確認してください。

5.6.5.2. デーモンセットの確認

問題
Poison Pill Operator はインストールされていますが、デーモンセットは使用できません。
解決策
エラーまたは警告がないか、オペレーターログを確認してください。

5.6.5.3. 失敗した修復

問題
不健康なノードは修正されませんでした。
解決策

次のコマンドを実行して、PoisonPillRemediationCR が作成されたことを確認します。

$ oc get ppr -A

ノードが不健康になったときに MachineHealthCheck コントローラーが PoisonPillRemediation CR を作成しなかった場合は、MachineHealthCheck コントローラーのログを確認してください。さらに、MachineHealthCheck CR に、修復テンプレートを使用するために必要な仕様が含まれていることを確認してください。

PoisonPillRemediation CR が作成された場合は、その名前が異常なノードまたはマシンオブジェクトと一致することを確認してください。

問題
Poison Pill Operator のリソース (デーモンセット、設定 CR、修復テンプレート CR など) は、Operator をアンインストールした後も存在します。
解決策

Poison Pill Operator リソースを削除するには、リソースタイプごとに次のコマンドを実行してリソースを削除します。

$ oc delete ds <poison-pill-ds> -n <namespace>
$ oc delete ppc <poison-pill-config> -n <namespace>
$ oc delete pprt <poison-pill-remediation-template> -n <namespace>
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る