Azure Kubernetes Service (AKS) ノードの自動修復

適用対象: ✔️ AKS 自動 ✔️ AKS Standard

Azure Kubernetes Service (AKS) によってワーカー ノードの正常性状態が継続的に監視され、正常ではなくなった場合、ノードの自動修復が実行されます。 Azure 仮想マシン (VM) プラットフォームでは、問題が発生している VM に対してメンテナンスが実行されます。 AKS と Azure VM が連携し、クラスターのサービス中断が最小限に抑えられます。

ほとんどの運用ワークロードでは、AKS の推奨される運用環境対応の既定のエクスペリエンスが AKS 自動です。 AKS 自動クラスターと AKS Standard クラスターの両方に、ノードの自動修復が事前構成されています。

この記事では、ノードの自動修復のしくみ、修復アクションがトリガーされたとき、適用される制限事項、および修復イベントを監視する方法について説明します。

クラスター モードによるノードの自動修復動作

どちらの AKS クラスター モードも、ノードの自動修復を使用して事前構成されています。

  • AKS 自動: AKS 自動運用対応の既定値の一部として事前構成されています。
  • AKS Standard: 追加のセットアップなしで AKS Standard クラスターで事前構成済み。

どちらのモードでも、同じノードの正常性チェックと、この記事で説明する同じ修復シーケンスが使用されます。

AKS 自動プラットフォームの既定値の詳細については、「Azure Kubernetes Service (AKS)自動とは」を参照してください。

NotReady ノードを AKS で確認する方法

AKS では、ノードが正常ではなく、修復が必要かどうかを、次のルールを利用して判断します。

  • 10 分の時間枠内の連続した確認で NotReady 状態がノードから報告される。
  • ノードからは、10 分以内に何の状態も報告されません。

kubectl get nodes コマンドを使用して、ノードの正常性状態を手動で確認できます。

自動修復のしくみ

注

AKS が、ユーザー アカウント AKS-remediator を使用して修復操作を開始します。

少なくとも 5 分間異常な状態が続く異常なノードが AKS によって識別された場合、AKS は次のアクションを実行します。

  1. AKS はノードを再起動します。
  2. 再起動後もノードが異常なままの場合、AKS によってノードが再イメージ化されます。
  3. 再イメージ化後もノードが異常なままで Linux ノードである場合、AKS はノードを再デプロイします。

ノードが異常な状態が続く場合、AKS は再起動、再イメージ化、再デプロイのシーケンスを最大 3 回再試行します。 全体的な自動修復プロセスが完了するまでに最大 1 時間かかる場合があります。

実稼働に関する考慮事項

ノードの自動修復はコア回復性メカニズムですが、ワークロード レベルの回復性プラクティスと組み合わせます。

  • 複数のレプリカで重要なワークロードを実行します。
  • PodDisruptionBudgets と準備プローブを使用して、ユーザーに表示される影響を減らします。
  • 修復アクティビティとエラー イベントを監視して、ノードの繰り返しの問題を検出します。
  • 自動修復タイミングを SLO/SLA とインシデント対応計画に組み込みます。

制限事項

AKS ノードの自動修復はベスト エフォート サービスです。 AKS では、すべてのシナリオでノードが正常な状態に復元されるとは限りません。 ノードが異常なままの場合は、手動調査を実行します。 詳細については、「 ノード NotReady 状態のトラブルシューティング」を参照してください。

AKS では、次のシナリオでは自動修復が実行されない場合があります。

  • ネットワーク構成エラーにより、ノードの状態が報告されません。
  • ノードが正常なノードとして登録できない。
  • ノードには、次のいずれかのテイントがあります。
    • node.cloudprovider.kubernetes.io/shutdown
    • ToBeDeletedByClusterAutoscaler
  • ノードはアップグレード中であり、次の注釈があります。
    • "cluster-autoscaler.kubernetes.io/scale-down-disabled": "true"
    • "kubernetes.azure.com/azure-cluster-autoscaler-scale-down-disabled-reason": "upgrade"

Kubernetes イベントを使用してノードの自動修復を監視する

AKS は、ノードの自動修復を実行すると、 aks-auto-repair ソースから Kubernetes イベントを生成します。 自動修復が行われると、ノード オブジェクトに次のイベントが表示されます。

Kubernetes イベントに対するアクセス、格納、アラートの詳細については、 AKS でのトラブルシューティングに Kubernetes イベントを使用する方法に関するページを参照してください。

理由 イベント メッセージ 説明
ノード再起動開始 ノードの自動修復では、NotReady 状態が 5 分以上保持されるため、再起動アクションが開始されます。 このイベントは、再起動がノードで実行されるときに通知します。 このアクションは、ノードの自動修復シーケンス全体で最初のアクションです。
NodeRebootEnd ノードの自動修復からの再起動アクションが完了しました。 ノードで再起動が完了すると生成されます。 このイベントは、再起動の実行後にノードの正常性状態 (正常または異常) を示すわけではありません。
NodeReimageStart ノードの自動修復では、NotReady 状態が 5 分以上保持されるため、再イメージ化アクションが開始されます。 このイベントは、再イメージ化がノードで実行されるときに通知します。
NodeReimageEnd ノードの自動修復からの再イメージ化アクションが完了しました。 ノードで再イメージ化が完了すると生成されます。 このイベントは、再イメージ化の実行後にノードの正常性状態 (正常または異常) を示すわけではありません。
ノード再配置開始 ノードの自動修復は、NotReady の状態が 5 分を超えて保持されるため、再デプロイ アクションを開始しています。 このイベントは、再デプロイがノードで実行されようとしているときに通知します。 再デプロイは、ノードの自動修復シーケンスの最後のアクションです。
NodeRedeployEnd ノードの自動修復からの再デプロイ アクションが完了しました。 ノードで再デプロイが完了すると生成されます。 このイベントは、再デプロイの実行後にノードの正常性状態 (正常または異常) を示すわけではありません。

ノードの自動修復中にエラーが発生した場合、AKS は逐語的なエラー メッセージと共に次のイベントを生成します。 詳細については、 一般的なノード自動修復エラーのトラブルシューティングを参照してください。

注

次のイベント メッセージのエラー コードは、報告されたエラーによって異なります。

理由 イベント メッセージ 説明
NodeRebootError ノード自動修復の再起動アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 再起動アクションでエラーが発生したときに生成されます。
NodeReimageError(ノード再イメージエラー) ノード自動修復の再イメージ化アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 再イメージ化アクションでエラーが発生したときに生成されます。
ノード再配置エラー ノード自動修復の再デプロイ アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 再デプロイ アクションでエラーが発生したときに生成されます。