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 分間異常な状態にある異常なノードを識別すると、次のアクションを実行します。
- AKS はノードを再起動します。
- 再起動後もノードが異常なままの場合、AKS はノードを再イメージ化します。
- ノードが再イメージ化後も異常なままで、Linux ノードである場合、AKS はノードを再デプロイします。
ノードが異常なままである場合、AKS は再起動、再イメージ化、再デプロイのシーケンスを最大 3 回再試行します。 自動修復プロセスの全体が完了するには、最長で 1 時間かかることがあります。
制限事項
AKS ノードの自動修復はベスト エフォート サービスであり、ノードが正常な状態に復元される保証はありません。 ノードが異常な状態のままである場合は、ノードの手動調査を実行することを強くお勧めします。 詳細については、NotReady 状態のノードのトラブルシューティングに関する記事を参照してください。
AKS で自動修復が実行されない場合があります。 ノードの自動修復に失敗するのは、設計によるものか、または Azure が問題が存在することを検出できない場合です。 自動修復が実行されない場合の例は次のとおりです。
- ネットワーク構成にエラーがあり、ノードの状態が報告されていない。
- ノードを最初に正常なノードとして登録できなかった。
- ノードに次のいずれかのテイントが存在する場合:
node.cloudprovider.kubernetes.io/shutdown
、ToBeDeletedByClusterAutoscaler
。
Kubernetes イベントを使用してノードの自動修復を監視する
AKS がクラスターでノードの自動修復を実行する場合、AKS は可視性のために aks-auto-repair ソースから Kubernetes イベントを生成します。 自動修復が行われると、ノード オブジェクトに以下のイベントが表示されます。
Kubernetes イベントのアクセス、格納、アラートの構成の詳細については、「Azure Kubernetes Service でのトラブルシューティングに Kubernetes イベントを使用する」を参照してください。
理由 | イベント メッセージ | 説明 |
---|---|---|
NodeRebootStart | ノードの自動修復では、NotReady の状態が 5 分を超えて続くため、再起動アクションが開始されます。 | このイベントは、再起動がノードで実行されようとするタイミングを通知するために生成されます。 このアクションは、ノードの自動修復シーケンス全体で最初のアクションです。 |
NodeRebootEnd | ノードの自動修復からの再起動アクションが完了しました。 | ノードで再起動が完了すると生成されます。 このイベントは、再起動の実行後にノードの正常性状態 (正常または異常) を示すわけではありません。 |
NodeReimageStart | ノードの自動修復では、NotReady の状態が 5 分を超えて続くため、再イメージ化アクションが開始されます。 | このイベントは、再イメージ化がノードで実行されようとするタイミングを通知するために生成されます。 |
NodeReimageEnd | ノードの自動修復からの再イメージ化アクションが完了しました。 | ノードで再イメージ化が完了すると生成されます。 このイベントは、再イメージ化の実行後にノードの正常性状態 (正常または異常) を示すわけではありません。 |
NodeRedeployStart | ノードの自動修復では、NotReady の状態が 5 分を超えて続くため、再デプロイ アクションが開始されます。 | このイベントは、再デプロイがノードで実行されようとするタイミングを通知するために生成されます。 再デプロイは、ノードの自動修復シーケンスの最後のアクションです。 |
NodeRedeployEnd | ノードの自動修復からの再デプロイ アクションが完了しました。 | ノードで再デプロイが完了すると生成されます。 このイベントは、再デプロイの実行後にノードの正常性状態 (正常または異常) を示すわけではありません。 |
ノードの自動修復プロセス中にエラーが発生した場合は、次のイベントが逐語的エラー メッセージと共に生成されます。 詳細については、一般的なノード自動修復エラーのトラブルシューティングに関する記事を参照してください。
Note
以下のイベント メッセージ内の "エラー コード" は、報告されるエラーによって異なります。
理由 | イベント メッセージ | 説明 |
---|---|---|
NodeRebootError | ノード自動修復の再起動アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 | 再起動アクションでエラーが発生したときに生成されます。 |
NodeReimageError | ノード自動修復の再イメージ化アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 | 再イメージ化アクションでエラーが発生したときに生成されます。 |
NodeRedeployError | ノード自動修復の再デプロイ アクションが、操作の失敗により失敗しました。 "エラーコード" でエラーの詳細を参照してください。 | 再デプロイ アクションでエラーが発生したときに生成されます。 |
次のステップ
既定では、過去 1 時間の AKS クラスター上の Kubernetes イベントとログにアクセスできます。 過去 90 日間のイベントとログを格納してクエリを実行するには、Container Insights を有効にして、AKS クラスターの詳細なトラブルシューティングを行います。
Azure Kubernetes Service