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

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

この記事では、Windows ノードおよび Linux ノードのノード自動修復機能の仕組みについて説明します。

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

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

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

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

自動修復のしくみ

注意

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

AKS は 5 分間異常な状態にある異常なノードを識別すると次のアクションを実行します。

  1. ノードの再起動を試みます。
  2. ノードの再起動に失敗した場合、AKS はノードを再イメージ化します。
  3. 再イメージ化に失敗した場合で、これが Linux ノードである場合、AKS はノードを再デプロイします。

自動修復が失敗した場合、AKS エンジニアによる代替の修復の調査が行われます。

Note

次の汚染がノードにある場合、自動修復はトリガーされません。 node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler

自動修復プロセスの全体が完了するには、最長で 1 時間かかることがあります。 AKS では、各ステップで最大 3 回再試行します。

ノードの自動ドレイン

スケジュール化されたイベントは、ノード プールのいずれかにある基になる VM で発生する可能性があります。 スポット ノード プールの場合、スケジュール化されたイベントからノードの Preempt ノード イベントが発生する可能性があります。 preempt などの特定のノード イベントでは、AKS ノードの自動ドレインが発生し、影響を受けたノードの切断およびドレインが試行されます。 このプロセスにより、そのノードの影響を受けたワークロードの再スケジュールが可能になります。 "kubernetes.azure.com/scalesetpriority: spot"が原因で、ノードが "remediator.kubernetes.azure.com/unschedulable" のテイントを受け取る場合があります。

次の表は、ノード イベントと、そのイベントが AKS ノードの自動ドレインのために発生させるアクションを示しています。

Event 説明 アクション
Freeze VM は数秒一時停止するようスケジュールされています。 CPU とネットワーク接続が中断する場合がありますが、メモリや開いているファイルへの影響はありません。 NO ACTION
再起動 VM には再起動がスケジュールされています。 VM の非永続的メモリが失われます。 NO ACTION
Redeploy VM は別のノードに移動するようスケジュールされています。 VM のエフェメラル ディスクは失われます。 切断およびドレイン。
Preempt スポット VM は削除されています。 VM のエフェメラル ディスクは失われます。 切断およびドレイン
Terminate VM が削除対象としてスケジュールされています。 切断およびドレイン。

制限事項

多くの場合で、ノードが異常かどうかの AKS による識別と、問題の修復の試行が可能です。 ただし、AKS で問題を修復できない場合や、問題があることを検出できない場合があります。 たとえば、次のシナリオ例では、AKS で問題を検出できません。

  • ネットワーク構成にエラーがあり、ノードの状態が報告されていない。
  • ノードを最初に正常なノードとして登録できなかった。

ノードの自動ドレインはベスト エフォート サービスであり、あらゆるシナリオで完璧に動作するとは限りません

次のステップ

可用性ゾーンを使用して AKS クラスター ワークロードの高可用性を強化します。