Azure Kubernetes Service (AKS) ノードの自動修復
AKS によってワーカー ノードの正常性状態が継続的に監視され、正常ではなくなった場合、ノードの自動修復が実行されます。 Azure 仮想マシン (VM) プラットフォームでは、問題が発生している VM に対してメンテナンスが実行されます。
AKS と Azure VM が連携し、クラスターのサービス中断が最小限に抑えられます。
このドキュメントでは、Windows ノードと Linux ノードの両方の、ノードの自動修復機能について説明します。
正常ではないノードを AKS で確認する方法
AKS では、ノードが正常ではなく、修復が必要かどうかを、次のルールを利用して判断します。
- 10 分という時間枠内で連続して確認した結果、NotReady 状態がノードから報告されます。
- ノードからは、10 分以内に何の状態も報告されません。
kubectl を利用し、ノードの正常性状態を手動確認できます。
kubectl get nodes
自動修復のしくみ
注意
AKS が、ユーザー アカウント AKS-remediator を使用して修復操作を開始します。 自動修復に必要な AKS クラスター内の最小ノード数は 2 です。
AKS により 10 分間異常な状態にある異常なノードが識別されると、次のアクションが実行されます。
- ノードを再起動します。
- 再起動に失敗した場合は、ノードを再イメージ化します。
- 再イメージ化に失敗した場合は、ノードを再デプロイします。
自動修復に失敗した場合、AKS エンジニアによって代替の修復が調査されます。
正常性チェック中に AKS で複数の異常なノードが検出された場合、各ノードを個別に修復してから、別の修復が開始されます。
ノードの自動ドレイン
Scheduled Events は、任意のノード プール内の基になる仮想マシン (VM) で発生する可能性があります。 スポット ノード プールの場合、スケジュール化されたイベントからノードの Preempt ノード イベントが発生する可能性があります。 特定のノード イベント (例: Preempt) を使用すると、AKS ノードの自動ドレインによって、影響を受けるノードの切断とドレインが試行されます。これにより、そのノード上の影響を受けるワークロードの適切な再スケジュールが可能になります。 これが発生すると、"kubernetes.azure.com/scalesetpriority: spot" が原因で、ノードが "remediator.aks.microsoft.com/unschedulable" のテイントを受け取る場合があります。
次の表は、ノード イベントと、AKS ノードの自動ドレインに対して発生するアクションを示しています。
Event | 説明 | アクション |
---|---|---|
Freeze | VM は数秒一時停止するようスケジュールされています。 CPU とネットワーク接続が中断する場合がありますが、メモリや開いているファイルへの影響はありません | アクションなし |
再起動 | VM には再起動がスケジュールされています。 VM の非永続的メモリが失われます。 | アクションなし |
Redeploy | VM は別のノードに移動するようスケジュールされています。 VM のエフェメラル ディスクは失われます。 | 切断およびドレイン |
Preempt | スポット VM は削除されています。 VM のエフェメラル ディスクは失われます。 | 切断およびドレイン |
Terminate | VM は削除される予定です。 | 切断およびドレイン |
制限事項
多くの場合は AKS でノードが異常かどうかを判断して問題の修復を試みることができますが、場合によっては AKS では問題を修復したり、問題があることを検出したりすることができません。 たとえば、ネットワーク構成のエラーが原因でノードの状態が報告されていない場合や、正常なノードとして最初に登録できなかった場合、AKS は問題を検出できません。
次のステップ
Availability Zones を使用し、AKS クラスター ワークロードで高可用性を上げます。