計画メンテナンスを使用して Azure Kubernetes Service (AKS) クラスターのアップグレードをスケジュールおよび制御する
この記事では、計画メンテナンスを使用して、Azure Kubernetes Service (AKS) でクラスターとノード イメージのアップグレードをスケジュールおよび制御する方法について説明します。
AKS クラスターでは、定期的なメンテナンスが自動的に実行されます。 メンテナンス操作には、AKS によって開始される操作とユーザーが開始する操作の 2 種類があります。 AKS によって開始されるメンテナンスには、最新の機能と修正プログラムを使用してクラスターを最新の状態に保つために AKS が実行する毎週のリリースが含まれます。 ユーザーが開始するメンテナンスには、クラスターの自動アップグレードとノード OS の自動セキュリティ更新プログラムが含まれます。 計画メンテナンス機能を使用すると、両方の種類のメンテナンスを任意の頻度で実行できるため、ワークロードへの影響を最小限に抑えることができます。
開始する前に
- この記事は、AKS クラスターがすでに存在していることを前提としています。 AKS クラスターがない場合は、AKS クラスターの作成に関するページを参照してください。
- Azure CLI を使用する場合は、必ず
az upgrade
コマンドを使用して最新バージョンにアップグレードしてください。
考慮事項
計画メンテナンスを使用する場合は、次の考慮事項が適用されます。
- AKS は、緊急または重大な計画外または事後対応のメンテナンス操作のために、計画メンテナンス期間を中断する権利を留保します。 これらのメンテナンス操作は、構成で定義されている
notAllowedTime
またはnotAllowedDates
の期間中に実行される場合もあります。 - メンテナンス操作の実行はベストエフォートのみと見なされており、指定した期間内に行われる保証はありません。
計画メンテナンス スケジュールの構成
default
、aksManagedAutoUpgradeSchedule
、aksManagedNodeOSUpgradeSchedule
の 3 種類のメンテナンス スケジュール構成を利用できます。
default
は、AKS リリースを制御するために使用される基本的な構成です。 これらのリリースは、Azure の安全なデプロイ プラクティス (SDP) により、最初の出荷時点からすべてのリージョンに展開されるまで最大 2 週間かかることがあります。 最も中断が少ない方法でこれらの更新プログラムをスケジュールするには、default
を選びます。 週間リリース トラッカーで、リージョン別に進行中の AKS リリースの状態を監視できます。aksManagedAutoUpgradeSchedule
は、ユーザーが指定した自動アップグレード チャネルによってスケジュールされたクラスターのアップグレードをいつ実行するかを制御します。 この構成では、default
構成と比較して、より細かく制御された頻度と繰り返しの設定を構成できます。 クラスターの自動アップグレードについて詳しくは、Azure Kubernetes Service (AKS) クラスターの自動アップグレードに関する記事をご覧ください。aksManagedNodeOSUpgradeSchedule
は、ノード オペレーティング システム (OS) の自動アップグレード チャネルによってスケジュールされたノード OS のセキュリティ パッチ適用をいつ実行するかを制御します。 この構成では、default
構成と比較して、より細かく制御された頻度と繰り返しの設定を構成できます。 ノード OS の自動アップグレード チャネルについて詳しくは、AKS クラスター ノード イメージの自動的なパッチと更新に関する記事をご覧ください。
すべてのクラスター アップグレード シナリオには aksManagedAutoUpgradeSchedule
を使い、すべてのノード OS セキュリティ パッチ適用シナリオには aksManagedNodeOSUpgradeSchedule
を使うことをお勧めします。 default
オプションは、AKS の毎週のリリース専用です。 default
の構成は、az aks maintenanceconfiguration update
コマンドを使って aksManagedAutoUpgradeSchedule
または aksManagedNodeOSUpgradeSchedule
構成に切り替えることができます。
メンテナンス期間の作成
Note
自動アップグレードを使用する場合は、機能が確実に働くように、メンテナンス期間を 4 時間以上の期間に設定してください。
計画メンテナンスの期間は、協定世界時 (UTC) で指定します。
default
メンテナンス期間には、次のプロパティが用意されています。
名前 | Description | 既定値 |
---|---|---|
timeInWeek |
default 構成内のこのプロパティには、メンテナンス期間を定義する値として、day と hourSlots が含まれています |
該当なし |
timeInWeek.day |
default 構成でメンテナンスを実行する曜日 |
該当なし |
timeInWeek.hourSlots |
default 構成で特定の日にメンテナンスを実行する場合の、1 時間のタイム スロットのリスト |
該当なし |
notAllowedTime |
メンテナンスを実行できない日付の範囲を指定します。これは子プロパティ start と end で決定されます。 構成ファイルを使用してメンテナンス期間を作成する場合にのみ適用されます |
該当なし |
aksManagedAutoUpgradeSchedule
または aksManagedNodeOSUpgradeSchedule
のメンテナンス期間には、次のプロパティがあります。
名前 | Description | 既定値 |
---|---|---|
utcOffset |
クラスターメンテナンスのタイムゾーンを決定するために使用されます | +00:00 |
startDate |
メンテナンス期間が有効になる日付 | 作成時刻の現在の日付 |
startTime |
utcOffset によって決定されたタイムゾーンに基づいて、メンテナンスが開始される時刻 |
該当なし |
schedule |
頻度を決定するのに使用されます。 次の 3 種類から選択できます: Weekly 、AbsoluteMonthly 、RelativeMonthly |
該当なし |
intervalDays |
メンテナンス実行の間隔 (日数)。 aksManagedNodeOSUpgradeSchedule にのみ適用されます。 |
該当なし |
intervalWeeks |
メンテナンス実行の間隔 (週単位) | 該当なし |
intervalMonths |
メンテナンス実行の間隔 (月単位) | 該当なし |
dayOfWeek |
メンテナンスを開始する指定曜日 | 該当なし |
durationHours |
メンテナンスを実行するための期間の長さ | 該当なし |
notAllowedDates |
メンテナンスを実行できない日付の範囲を指定します。これは子プロパティ start と end で決定されます。 構成ファイルを使用してメンテナンス期間を作成する場合にのみ適用されます |
該当なし |
スケジュールの種類について
使用できるスケジュールは、Daily
、Weekly
、AbsoluteMonthly
、RelativeMonthly
の4 種類です。 これらのスケジュールの種類は、aksManagedClusterAutoUpgradeSchedule
と aksManagedNodeOSUpgradeSchedule
の構成にのみ適用されます。 Daily
スケジュールは、aksManagedNodeOSUpgradeSchedule
の種類にのみ適用されます。
Note
それぞれのスケジュールの種類ごとに表示されるすべてのフィールドが必須です。
毎日のスケジュール
注意
毎日のスケジュールは、aksManagedNodeOSUpgradeSchedule
の構成の種類にのみ適用されます。
Daily
のスケジュールは、"3 日ごと" のようになります。
"schedule": {
"daily": {
"intervalDays": 3
}
}
週単位のスケジュール
Weekly
のスケジュールは "2 週間ごとの金曜日に" のようになります。
"schedule": {
"weekly": {
"intervalWeeks": 2,
"dayOfWeek": "Friday"
}
}
AbsoluteMonthly スケジュール
AbsoluteMonthly
のスケジュールは、"3 か月ごとに月の初日に" のようになります。
"schedule": {
"absoluteMonthly": {
"intervalMonths": 3,
"dayOfMonth": 1
}
}
RelativeMonthly スケジュール
RelativeMonthly
のスケジュールは、"2 か月ごとに最後の月曜日に" のようになります。
"schedule": {
"relativeMonthly": {
"intervalMonths": 2,
"dayOfWeek": "Monday",
"weekIndex": "Last"
}
}
weekIndex
の有効な値には、First
、Second
、Third
、Fourth
、Last
が含まれます。
メンテナンス期間の構成を追加する
az aks maintenanceconfiguration add
コマンドを使用して、AKS クラスターにメンテナンス期間の構成を追加します。最初の例では、毎週月曜日の午前 1 時から午前 2 時までメンテナンスを実行するようにスケジュールする新しい
default
構成を追加します。 2 番目の例では、UTC+5:30
タイムゾーンで毎月第 3 金曜日の午前 12:00 から午前 8:00 の間にメンテナンスを実行するようにスケジュールする、新しいaksManagedAutoUpgradeSchedule
構成を追加します。# Add a new default configuration az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1 # Add a new aksManagedAutoUpgradeSchedule configuration az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00
Note
default
構成の種類を使用している場合は、1 日中いつでもメンテナンスを行えるように、--start-time
パラメータを省略することができます。
既存のメンテナンス期間を更新する
az aks maintenanceconfiguration update
コマンドを使用して、既存のメンテナンス構成を更新します。次の例では、
default
構成を更新して、毎週月曜日の午前 2 時から午前 3 時までメンテナンスを実行するようにスケジュールします。az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2
既存のクラスター内のすべてのメンテナンス期間を一覧表示する
az aks maintenanceconfiguration list
コマンドを使用して、AKS クラスターの現在のメンテナンス構成期間を一覧表示します。
az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster
既存のクラスター内の特定のメンテナンス構成期間を表示する
--name
パラメータを指定した az aks maintenanceconfiguration show
コマンドを使用して、AKS クラスター内の特定のメンテナンス構成期間を表示します。
az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule
次の出力例では、aksManagedAutoUpgradeSchedule のメンテナンス期間が示されています。
{
"id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
"maintenanceWindow": {
"durationHours": 4,
"notAllowedDates": [
{
"end": "2024-01-05",
"start": "2023-12-23"
}
],
"schedule": {
"absoluteMonthly": {
"dayOfMonth": 1,
"intervalMonths": 3
},
"daily": null,
"relativeMonthly": null,
"weekly": null
},
"startDate": "2023-01-20",
"startTime": "09:00",
"utcOffset": "-08:00"
},
"name": "aksManagedAutoUpgradeSchedule",
"notAllowedTime": null,
"resourceGroup": "myResourceGroup",
"systemData": null,
"timeInWeek": null,
"type": null
}
既存のクラスターのメンテナンス構成期間を削除する
az aks maintenanceconfiguration delete
コマンドを使用して、AKS クラスター内のメンテナンス構成期間を削除します。次の例では、
autoUpgradeSchedule
メンテナンス構成を削除します。az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule
よく寄せられる質問
クラスターの既存のメンテナンス構成を確認するにはどうすればよいですか?
az aks maintenanceconfiguration show
コマンドを使用します。事後対応型で計画外のメンテナンスは、
notAllowedTime
またはnotAllowedDates
の期間中にも行われますか?はい。AKS では、緊急または重大な計画外または事後対応のメンテナンス操作のために、これらの期間を無効にする権利を留保します。
メンテナンス イベントが発生したかどうかを確認するにはどうすればよいですか?
リリースの場合は、クラスターのリージョンを確認し、毎週のリリースでリリース情報を検索し、メンテナンス スケジュールと一致するかどうかを検証します。 自動アップグレードの状態を表示するには、クラスターのアクティビティ ログを検索します。 「AKS クラスターのアップグレード」で説明されているように、特定のアップグレード関連イベントを検索することもできます。 AKS では、アップグレード関連の Event Grid のイベントも生成されます。 詳細については、「Event Grid ソースとしての AKS」を参照してください。
同時に複数のメンテナンス構成を使用できますか?
はい。3 つの構成 (
default
、aksManagedAutoUpgradeSchedule
、aksManagedNodeOSUpgradeSchedule
) をすべて同時に実行できます。 ウィンドウが重なる場合、AKS が実行順序を決定します。メンテナンス期間を構成しましたが、アップグレードが行われませんでした - なぜですか?
AKS の自動アップグレードでは、メンテナンス期間を考慮に入れるのに一定の時間が必要です。 メンテナンス構成の作成または更新からスケジュールされた開始日時まで、少なくとも 24 時間は空けることをお勧めします。
また、計画メンテナンス期間の開始時にクラスターが起動していることを確認してください。 クラスターが停止している場合、そのコントロール プレーンは割り当てが解除され、操作は実行できません。
AKS の自動アップグレードでは、すべてのエージェント プールがアップグレードされませんでした - または、いずれかのプールがメンテナンス期間外にアップグレードされましたか?
エージェント プールがアップグレードに失敗した場合 (たとえば、ポッド中断予算によってアップグレードが妨げられる)、または失敗状態の場合は、メンテナンス期間外に後でアップグレードされる可能性があります。 このシナリオは "キャッチアップ アップグレード" と呼ばれ、AKS コントロール プレーンとは異なるバージョンのエージェント プールを許可しないようにします。
メンテナンス構成のベスト プラクティスはありますか?
NodeImage
チャネルを使用している場合は、新しいノード イメージが毎週配信され、SecurityPatch
チャネルが毎日セキュリティ更新プログラムを受け取ることを選択した場合は毎日配信されるため、ノード OS セキュリティ更新プログラムのスケジュールを週単位に設定することをお勧めします。 自動アップグレード スケジュールを月単位に設定して、kubernetes N-2 サポート ポリシーを把握します。 アップグレードのベスト プラクティスとその他の考慮事項の詳細については、AKS のパッチとアップグレード ガイダンスのページを参照してください。
次のステップ
- AKS クラスターのアップグレードを開始するには「AKS クラスターのアップグレード」を参照してください