Node Problem Detector (NPD) がノード例外を検出すると、ノードイベントまたはノード条件が生成され、Container Service for Kubernetes (ACK) クラスターに報告されます。 ACK Node Repairerは、各ノードのイベントまたは条件を自動的にリッスンし、関連する設定に基づいて問題を修正します。 このトピックでは、ACK Node Repairerをインストールおよび設定する方法について説明します。
前提条件
次のいずれかのタイプのACKクラスターが作成されます。
ACK Node Problem Detectorがインストールされています。 詳細については、「シナリオ 3 : node-problem-detector およびkube-eventer を使用して、ノードの例外をアラートする」をご参照ください。
背景情報
ACKノード・レペアラは、一般的に発生するノード例外およびこれらの例外を修正するためのアクションの事前定義されたリストでプログラムされる。 ノード例外が発生すると、ACK node Repairerはノードで対応するアクションを自動的にトリガーして例外を修正します。 ノード例外が修正されると、NPDはノード例外のステータスを自動的に変更します。 これにより、ノード例外を検出し修復するための閉ループシステムが作成されます。 O&Mエンジニアは、修正する必要のあるノード例外と、例外を修正するためのアクションを定義することもできます。
NPDは、Kubernetesノードを診断するためのツールです。 NPDは、Dockerエンジンのハング、Linuxカーネルのハング、アウトバウンドトラフィックの異常、ファイル記述子の異常などの例外が検出されると、ノード例外を検出し、ノードイベントを生成します。
ack-node-repairerのインストール
ACK Node Repairerを使用する前に、まずack-node-repairerをインストールする必要があります。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
Marketplaceページで、ack-node-repairerを検索して選択します。
コンポーネントの詳細ページで、右上隅の [デプロイ] をクリックします。
[デプロイ] パネルで、クラスターと名前空間を選択し、[次へ] をクリックします。
[パラメーター] ステップで、最新のグラフバージョンを選択し、[パラメーター] セクションでAccessKeyペアを指定し、[OK] をクリックします。
次の説明に基づいてAccessKeyペアを指定します。
accessKey: nodeRepairer.accessKey
accessSecret: nodeRepairer.accessSecret
ack-node-repairerの設定
ACK Node Repairerをインストールすると、現在のバージョンでサポートされているすべての自動修復操作が自動的に実行されます。 ノード例外の種類の自動修復を設定および有効化または無効化できます。 次の例は、Network Time Protocol (NTP) サービス障害の問題を自動的に修正するようにack-node-repairerを設定する方法を示しています。
default-node-repairerのYAMLファイルを表示します。
ACK Node Repairerをインストールすると、default-node-repairerという名前のa noderepairers.nodes.alibabacloud.com型リソースオブジェクトがkube-system名前空間に自動的に作成されます。 このリソースオブジェクトは、ACK node Repairerによって監視されるノード例外と、ノード例外を修正するための関連アクションを定義します。 次のコマンドを実行して、YAMLファイルの内容を表示します。
kubectl -n kube-system get noderepairers.nodes.alibabacloud.com default-node-repairer -o yaml
default-node-repairerの設定を変更します。
spec.ru lesフィールドで、detectorパラメーターを追加して
NTPProblem
の問題を検出し、helersパラメーターを追加してNTPの問題を修正します。 次のコードブロックは例です。spec: rules: # Specify the detector parameter to detect NTP issues and the nodeOperation parameter to fix NTP issues. - detector: conditionType: NTPProblem type: conditionType paused: false healers: - nodeOperation: restart-ntpd type: nodejob
説明各ノード例外の自動修復を構成するには、ノード例外を修正するために実行されるアクションにノード条件を関連付ける必要があります。 rules.de tector.conditionTypeパラメーターは、ノード条件を指定します。 rules.de tector.pausedをtrueに設定すると、このタイプのノード条件の自動修復は無効になります。
上記の手順を実行した後、クラスター内のノードでNTPの問題が発生すると、ACK node Repairerは、CloudOps Orchestration service (OOS) を介してノードで
systemctl restart chronyd. Service
コマンドを自動的に実行し、ノードでNTPを再起動します。
自動修理イベントと結果の記録
A noderepairers.nodes.alibabacloud.comタイプのリソースオブジェクトは、kube-system名前空間に自動的に作成され、各自動修復イベントを記録します。 このリソースオブジェクトの内容を表示するには、次のコマンドを実行します。 出力の [ステータス] フィールドをチェックして、自動修復結果を表示することもできます。
kubectl -n kube-system get nodejobs.nodes.alibabacloud.com {nodejob_cr_name} -o yaml