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(ノード再イメージエラー) ノード自動修復の再イメージ化アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 再イメージ化アクションでエラーが発生したときに生成されます。
ノード再配置エラー ノード自動修復の再デプロイ アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 再デプロイ アクションでエラーが発生したときに生成されます。