ノードの OS イメージを自動アップグレードする

AKS には、タイムリーなノード レベルの OS セキュリティ更新プログラムに専用の複数の自動アップグレード チャネルが用意されています。 このチャネルは、クラスター レベルの Kubernetes バージョンのアップグレードとは異なり、それに代わるものです。

ノード OS の自動アップグレードとクラスターの自動アップグレードの間の相互作用

ノード レベルの OS セキュリティ更新プログラムは、Kubernetes パッチまたはマイナー バージョンの更新プログラムよりも速い頻度で提供されます。 ノード OS 自動アップグレード チャネルを使用すると、柔軟性が得られ、ノード レベルの OS セキュリティ更新プログラムに対してカスタマイズされた戦略が可能になります。 その後、クラスター レベルの Kubernetes バージョンの 自動アップグレード用に別のプランを選択できます。 クラスター レベルの自動アップグレードとノード OS の自動アップグレード チャネルの両方を一緒に使うのが最善です。 クラスターの自動アップグレード チャネルには aksManagedAutoUpgradeSchedule、ノード OS の自動アップグレード チャネルには aksManagedNodeOSUpgradeSchedule という 2 つの別個のメンテナンス期間を適用することで、スケジュールを微調整できます。

ノード OS イメージのアップグレード用のチャネル

選択したチャネルによって、アップグレードのタイミングが決まります。 ノード OS の自動アップグレード チャネルに変更を加えるときは、変更が反映されるまで最大 24 時間かかります。 あるチャネルから別のチャネルに変更すると、再イメージ化がトリガーされ、ノードのローリングが行われます。

Note

ノード OS イメージ自動アップグレードはクラスターの Kubernetes バージョンには影響しません。 サポートされているバージョンのクラスターでのみ機能します。

次のアップグレード チャネルを使用できます。 次のいずれかのオプションを選択できます。

チャネル 説明 OS 固有の動作
None ノードには、セキュリティ更新プログラムが自動的に適用されません。 つまり、セキュリティ更新プログラムについては、お客様に全責任があります。 該当なし
Unmanaged OS 更新プログラムは、OS 組み込みのパッチ適用インフラストラクチャを通じて自動的に適用されます。 新しく割り当てられたマシンには、当初はパッチが適用されていません。 OS のインフラストラクチャによって、ある時点でパッチが適用されます。 Ubuntu と Azure Linux (CPU ノード プール) によって、1 日に約 1 回、06:00 UTC 頃に無人アップグレード/dnf-automatic を通じてセキュリティ パッチが適用されます。 Windows では自動的にセキュリティ パッチが適用されないため、このオプションは None と同じように動作します。 kured などのツールを使って再起動プロセスを管理する必要があります。
SecurityPatch このチャネルはプレビュー段階であり、機能フラグ NodeOsUpgradeChannelPreview を有効にする必要があります。 詳細については、「前提条件」セクションを参照してください。 AKS は、ノードの仮想ハード ディスク (VHD) を、"security only" というラベルの付いたイメージ メンテナンス ツールからのパッチで定期的に更新します。セキュリティ パッチがノードに適用されるときに、中断が発生する可能性があります。 パッチが適用されると、メンテナンス期間とサージ設定を考慮して VHD が更新され、既存のマシンがその VHD にアップグレードされます。 このオプションでは、ノード リソース グループで VHD をホストするための追加コストが発生します。 このチャネルを使用する場合、Linux の無人アップグレードは既定で無効になります。 Azure Linux では、GPU 対応 VM でこのチャネルはサポートされていません。 SecurityPatch は、マイナー Kubernetes バージョンが引き続きサポートされている限り、非推奨のパッチ バージョンで機能します。
NodeImage AKS では、週 1 回の頻度で、セキュリティ修正とバグ修正を含む新しくパッチが適用された VHD でノードを更新します。 新しい VHD の更新は、メンテナンス期間とサージ設定に従って中断されます。 このオプションを選んだ場合、追加の VHD コストは発生しません。 このチャネルを使用する場合、Linux の無人アップグレードは既定で無効になります。 ノード イメージのアップグレードでは、非推奨になったパッチ バージョンであっても、Kubernetes のマイナー バージョンがまだサポートされている限り、サポートされます。

新しいクラスター上でノード OS 自動アップグレード チャネルを設定する

  • az aks create コマンドと --node-os-upgrade-channel パラメーターを使用して、新しいクラスター上でノード OS 自動アップグレード チャネルを設定します。 次の例では、ノード OS 自動アップグレード チャネルを SecurityPatch に設定します。

    az aks create --resource-group myResourceGroup --name myAKSCluster --node-os-upgrade-channel SecurityPatch
    

既存のクラスター上でノード OS 自動アップグレード チャネルを設定する

  • az aks update コマンドと --node-os-upgrade-channel パラメーターを使用して、既存のクラスター上でノード OS 自動アップグレード チャネルを設定します。 次の例では、ノード OS 自動アップグレード チャネルを SecurityPatch に設定します。

    az aks update --resource-group myResourceGroup --name myAKSCluster --node-os-upgrade-channel SecurityPatch
    

所有権とスケジュールを更新する

既定の頻度とは、適用されている計画メンテナンス期間がないことを意味します。

チャネル 更新の所有権 既定の頻度
Unmanaged OS 主導のセキュリティ更新プログラム。 AKS では、これらの更新プログラムを制御できません。 Ubuntu と Azure Linux の場合は、毎晩午前 6 時頃 (UTC)。 Windows の場合は毎月。
SecurityPatch AKS でテストされ、完全に管理され、安全なデプロイ プラクティスで適用されます。 詳細については、Azure での Canonical ワークロードのセキュリティと回復性の向上についての記事を参照してください。 毎週。
NodeImage AKS 毎週。

Note

Windows セキュリティ更新プログラムは毎月リリースされますが、Unmanaged チャネルを使っても、これらの更新プログラムは Windows ノードに自動的に適用されません。 Unmanaged チャネルを選んだ場合、セキュリティ パッチを適切に適用するには、kured などのツールを使って再起動プロセスを管理する必要があります。

SecurityPatch チャネルの要件

SecurityPatch チャネルを使うには、クラスターで次の要件がサポートされている必要があります。

  • API バージョン 11-02-preview 以降を使用している必要があります
  • Azure CLI を使用している場合は、aks-preview CLI 拡張機能のバージョン 0.5.166 以降をインストールする必要があります
  • サブスクリプションで NodeOsUpgradeChannelPreview 機能フラグを有効にする必要があります

NodeOsUpgradeChannelPreview を登録する

NodeOsUpgradeChannelPreview 機能フラグは、次の例のとおり、NodeOsUpgradeChannelPreview コマンドを使用して登録します。

az feature register --namespace "Microsoft.ContainerService" --name "NodeOsUpgradeChannelPreview"

状態が [登録済み] と表示されるまでに数分かかります。 登録の状態は、az feature show コマンドで確認します。

az feature show --namespace "Microsoft.ContainerService" --name "NodeOsUpgradeChannelPreview"

状態が Registered と表示されたら、az provider register コマンドを使用して Microsoft.ContainerService リソース プロバイダーの登録を最新の情報に更新します。

az provider register --namespace Microsoft.ContainerService

ノード チャネルに関する既知のバグ

  • 現在、クラスターの自動アップグレード チャネルnode-image に設定すると、ノード OS の自動アップグレード チャネルも自動的に NodeImage に設定されます。 クラスターの自動アップグレード チャネルが node-image の場合、ノード OS の自動アップグレード チャネルの値を変更することはできません。 ノード OS の自動アップグレード チャネルの値を設定するには、クラスターの自動アップグレード チャネルの値が node-image ではないことを確認します。

  • SecurityPatch チャネルは、Windows OS ノード プールではサポートされていません。

Note

既定では、API バージョン 06-01-2022 以降を使って作成されたすべての新しいクラスターでは、ノード OS の自動アップグレード チャネルの値が NodeImage に設定されます。 06-01-2022 より前のバージョンの API で作成された既存のクラスターでは、ノード OS の自動アップグレード チャネル値が既定で None に設定されます。

ノード OS の計画メンテナンス期間

ノード OS の自動アップグレードの計画メンテナンスは、ユーザーが指定したメンテナンス期間に開始します。

Note

適切な機能を確保するには、"4 時間以上" のメンテナンス期間を費やしてください。

計画メンテナンスについて詳しくは、「計画メンテナンスを使用して Azure Kubernetes Service (AKS) クラスターのメンテナンス期間をスケジュールする」を参照してください。

ノード OS の自動アップグレードに関する FAQ

  • クラスターで現在の nodeOsUpgradeChannel 値を確認するにはどうすればよいですか?

az aks show コマンドを実行し、"autoUpgradeProfile" を調べて、nodeOsUpgradeChannel がどの値に設定されているかを確認します。

az aks show --resource-group myResourceGroup --name myAKSCluster --query "autoUpgradeProfile"
  • ノード OS の自動アップグレードの状態を監視するにはどうすればよいですか?

ノード OS の自動アップグレードの状態を表示するには、クラスターのアクティビティ ログを検索します。 AKS クラスターのアップグレードに関する記事で説明されているように、特定のアップグレード関連イベントを検索することもできます。 AKS は、アップグレード関連の Event Grid イベントも生成します。 詳細については、「Event Grid ソースとしての AKS」を参照してください。

  • クラスターの自動アップグレード チャネルが node-image に設定されている場合、ノード OS の自動アップグレード チャネルの値を変更することはできますか?

不正解です。 現在、クラスターの自動アップグレード チャネルnode-image に設定すると、ノード OS の自動アップグレード チャネルも自動的に NodeImage に設定されます。 クラスターの自動アップグレード チャネルが node-image の場合、ノード OS の自動アップグレード チャネルの値を変更することはできません。 ノード OS の自動アップグレード チャネルの値を変更できるためには、クラスターの自動アップグレード チャネルnode-image ではないことを確認してください。

  • Unmanaged チャネルよりも SecurityPatch が推奨される理由

Unmanaged チャネルでは、AKS はセキュリティ更新プログラムの配信方法とタイミングを制御しません。 SecurityPatch では、セキュリティ更新プログラムは完全にテストされ、安全なデプロイ プラクティスに従います。 SecurityPatch にはメンテナンス期間も適用されます。 詳細については、Azure での Canonical ワークロードのセキュリティと回復性の向上についての記事を参照してください。

  • ノードに SecurityPatch または NodeImage のアップグレードが適用されているかどうかを確認するにはどうすればよいですか?

次のコマンドを実行して、ノード ラベルを取得します。

kubectl get nodes --show-labels

返されるラベルの中に、次の出力のような行があります。

kubernetes.azure.com/node-image-version=AKSUbuntu-2204gen2containerd-202311.07.0

ここでは、基本ノード イメージのバージョンは AKSUbuntu-2204gen2containerd です。 該当する場合は、通常、セキュリティ更新プログラムのバージョンに従います。 上記の例では、202311.07.0 です。

同じ詳細は、Azure portal のノード ラベル ビューでも参照できます。

Azure portal の AKS クラスターに対するノード ページのスクリーンショット。ノード イメージ バージョンのラベルには、ベース ノード イメージと、適用された最新のセキュリティ パッチの日付が明確に表示されます。

次のステップ

アップグレードのベスト プラクティスとその他の考慮事項の詳細については、AKS のパッチとアップグレード ガイダンスのページを参照してください。