次の方法で共有


Azure Kubernetes Service (AKS) でのノード自動プロビジョニング (NAP) のノード イメージの更新

この記事では、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 で管理されるノードには、次のスケジュール パターンをお勧めします。

  • 週単位の周期: 定期的なノード イメージのロールアウトに推奨されます (例: 毎週日曜日)。

ノード OS メンテナンス スケジュールの作成の例

次のセクションでは、Azure CLI と JSON 構成ファイルを使用して NAP マネージド ノードの週単位のメンテナンス期間を作成する方法と、メンテナンス構成を更新、表示、一覧表示、削除する方法について説明します。

メンテナンス構成を作成する

  1. 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"
        }
      }
    }
    
  2. 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.json
    
  • az aks maintenanceconfiguration show コマンドを使用して、メンテナンス構成の詳細を表示します。

    az aks maintenanceconfiguration show \
      --resource-group $RESOURCE_GROUP \
      --cluster-name $CLUSTER_NAME \
      --name aksManagedNodeOSUpgradeSchedule
    
  • az aks maintenanceconfiguration list コマンドを使用して、クラスターのすべてのメンテナンス構成を一覧表示します。

    az aks maintenanceconfiguration list \
      --resource-group $RESOURCE_GROUP \
      --cluster-name $CLUSTER_NAME
    
  • az aks maintenanceconfiguration delete コマンドを使用してメンテナンス構成を削除します。

    az aks maintenanceconfiguration delete \
      --resource-group $RESOURCE_GROUP \
      --cluster-name $CLUSTER_NAME \
      --name aksManagedNodeOSUpgradeSchedule
    

詳細、例、および高度なシナリオについては、「 計画メンテナンスを使用して AKS クラスターのメンテナンス期間をスケジュールする」を参照してください

NAP の Karpenter ノード中断バジェットとポッド中断バジェット

NAP の Karpenter ノード中断予算とポッド中断予算の構成の詳細については、Karpenter の公式ドキュメントの次のリソースを参照してください。

次のステップ

AKS でのノード自動プロビジョニングの詳細については、次の記事を参照してください。