適用対象: ✔️ 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 は次のアクションを実行します。
- AKS はノードを再起動します。
- 再起動後もノードが異常なままの場合、AKS によってノードが再イメージ化されます。
- 再イメージ化後もノードが異常なままで Linux ノードである場合、AKS はノードを再デプロイします。
ノードが異常な状態が続く場合、AKS は再起動、再イメージ化、再デプロイのシーケンスを最大 3 回再試行します。 全体的な自動修復プロセスが完了するまでに最大 1 時間かかる場合があります。
実稼働に関する考慮事項
ノードの自動修復はコア回復性メカニズムですが、ワークロード レベルの回復性プラクティスと組み合わせます。
- 複数のレプリカで重要なワークロードを実行します。
- PodDisruptionBudgets と準備プローブを使用して、ユーザーに表示される影響を減らします。
- 修復アクティビティとエラー イベントを監視して、ノードの繰り返しの問題を検出します。
- 自動修復タイミングを SLO/SLA とインシデント対応計画に組み込みます。
制限事項
AKS ノードの自動修復はベスト エフォート サービスです。 AKS では、すべてのシナリオでノードが正常な状態に復元されるとは限りません。 ノードが異常なままの場合は、手動調査を実行します。 詳細については、「 ノード NotReady 状態のトラブルシューティング」を参照してください。
AKS では、次のシナリオでは自動修復が実行されない場合があります。
- ネットワーク構成エラーにより、ノードの状態が報告されません。
- ノードが正常なノードとして登録できない。
- ノードには、次のいずれかのテイントがあります。
node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler
- ノードはアップグレード中であり、次の注釈があります。
"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(ノード再イメージエラー) | ノード自動修復の再イメージ化アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 | 再イメージ化アクションでエラーが発生したときに生成されます。 |
| ノード再配置エラー | ノード自動修復の再デプロイ アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 | 再デプロイ アクションでエラーが発生したときに生成されます。 |