この記事では、Azure Kubernetes Service (AKS) でのノード自動プロビジョニング (NAP) のノード イメージの更新の概要について説明します。そのしくみ、推奨されるメンテナンス期間、使用を開始する例などです。
ノードの自動プロビジョニングにおけるノードイメージ更新のしくみ
既定では、新しいイメージ バージョンが使用可能になると、NAP ノード プール仮想マシン (VM) が自動的に更新されます。 AKS マネージド ノード オペレーティング システム (OS) アップグレード スケジュールのメンテナンス期間を構成して、新しいイメージを取得して NAP ノードに適用するタイミングを制御したり、Karpenter Node Disruption Budgets と Pod Disruption Budgets を使用してアップグレード中に中断が発生する方法とタイミングを制御したりできます。
注
NAP では、既存のノード イメージ バージョンが 90 日を超える場合、最新のイメージ バージョンが強制的に取得されます。 これにより、既存のメンテナンス期間がバイパスされます。
NAP のノード OS アップグレードメンテナンス期間
AKS 計画メンテナンス機能をノード OS 自動アップグレード チャネルと共に使用して、指定されたノード OS 自動アップグレード チャネルによってスケジュールされたノード OS セキュリティ修正プログラムの適用をいつ実行するかを制御するaksManagedNodeOSUpgradeScheduleメンテナンス期間を構成できます。
ノード OS アップグレードのメンテナンス期間の動作と考慮事項
NAP のノード OS アップグレード メンテナンス期間を構成する場合は、次の情報に注意してください。
-
aksManagedNodeOSUpgradeScheduleメンテナンス構成によって、NAP が新しいイメージを取得する期間が決まります。 この構成によって、既存のノードが中断されるタイミングが必ずしも決まるわけではありません。 - アップグレード メカニズムと決定基準は NAP/Karpenter に固有であり、NAP のドリフト ロジックによって評価されます。 NAP では、Karpenter ノード中断予算とポッド中断予算が考慮されます。 ドリフトの詳細については、Karpenter ドリフトのドキュメントを参照してください。
- これらの NAP アップグレードの決定は、クラスター
NodeImageチャネルとSecurityPatchチャネルとは別です。 ただし、aksManagedNodeOSUpgradeScheduleメンテナンス構成はそれらにも適用されます。 - 信頼性の高い操作を行う場合は、4 時間以上のメンテナンス期間を使用することをお勧めします。
- メンテナンス構成が存在しない場合、AKS はフォールバック スケジュールを使用して新しいイメージを取得する可能性があります。これにより、予期しない時間にイメージが取得される可能性があります。 明示的な
aksManagedNodeOSUpgradeScheduleを定義することで、新しいイメージとアップグレードの予期しないタイミングを回避できます。 - AKS が新しい構成を調整する時間を確保するために、メンテナンス構成の作成または更新とスケジュールされた開始時刻の間に少なくとも 30 分かかります。
NAP マネージド ノードの推奨スケジュール パターン
NAP で管理されるノードには、次のスケジュール パターンをお勧めします。
- 週単位の周期: 定期的なノード イメージのロールアウトに推奨されます (例: 毎週日曜日)。
ノード OS メンテナンス スケジュールの作成の例
次のセクションでは、Azure CLI と JSON 構成ファイルを使用して NAP マネージド ノードの週単位のメンテナンス期間を作成する方法と、メンテナンス構成を更新、表示、一覧表示、削除する方法について説明します。
メンテナンス構成を作成する
nodeosMaintenance.jsonという名前の JSON ファイルを週単位のメンテナンス期間で作成します (たとえば、日曜日の 01:00 UTC(4 時間))。{ "properties": { "maintenanceWindow": { "durationHours": 4, "schedule": { "weekly": { "intervalWeeks": 1, "dayOfWeek": "Sunday" } }, "startDate": "2025-01-01", "startTime": "01:00", "utcOffset": "+00:00" } } }az aks maintenanceconfiguration addコマンドを使用して、クラスターにメンテナンス構成を追加します。az aks maintenanceconfiguration add \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule \ --config-file ./nodeosMaintenance.json
メンテナンス構成の更新、表示、一覧表示、または削除
次のコマンドを使用して、NAP マネージド ノードのメンテナンス構成を更新、表示、一覧表示、または削除できます。
JSON ファイルを変更し、
az aks maintenanceconfiguration updateコマンドを実行して、メンテナンス構成を更新します。az aks maintenanceconfiguration update \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule \ --config-file ./nodeosMaintenance.jsonaz aks maintenanceconfiguration showコマンドを使用して、メンテナンス構成の詳細を表示します。az aks maintenanceconfiguration show \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeScheduleaz aks maintenanceconfiguration listコマンドを使用して、クラスターのすべてのメンテナンス構成を一覧表示します。az aks maintenanceconfiguration list \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAMEaz aks maintenanceconfiguration deleteコマンドを使用してメンテナンス構成を削除します。az aks maintenanceconfiguration delete \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --name aksManagedNodeOSUpgradeSchedule
詳細、例、および高度なシナリオについては、「 計画メンテナンスを使用して AKS クラスターのメンテナンス期間をスケジュールする」を参照してください。
NAP の Karpenter ノード中断バジェットとポッド中断バジェット
NAP の Karpenter ノード中断予算とポッド中断予算の構成の詳細については、Karpenter の公式ドキュメントの次のリソースを参照してください。
次のステップ
AKS でのノード自動プロビジョニングの詳細については、次の記事を参照してください。