ノードの 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 OS セキュリティ パッチ。AKS でテストされ、完全に管理され、安全なデプロイ プラクティスで適用されます。 AKS は、ノードの仮想ハード ディスク (VHD) を、"security only" というラベルの付いたイメージ メンテナンス ツールからのパッチで定期的に更新します。ノードにセキュリティ パッチが適用されると中断が発生する可能性がありますが、AKS では、特定のカーネル セキュリティ パッケージなど、必要なときにのみノードを再イメージ化することによって中断が制限されます。 パッチが適用されると、メンテナンス期間とサージ設定を考慮して VHD が更新され、既存のマシンがその VHD にアップグレードされます。 AKS では、ノードの再イメージ化が不要と判断された場合、ポッドをドレインすることなくライブ ノードにパッチが適用され、VHD の更新は行われません。 このオプションでは、ノード リソース グループで VHD をホストするための追加コストが発生します。 このチャネルを使用する場合、Linux の無人アップグレードは既定で無効になります。 Azure Linux では、GPU 対応 VM でこのチャネルはサポートされていません。 SecurityPatch は、マイナー Kubernetes バージョンが引き続きサポートされている限り、非推奨の Kubernetes パッチ バージョンで機能します。
NodeImage AKS では、週 1 回の頻度で、セキュリティ修正とバグ修正を含む新しくパッチが適用された VHD でノードを更新します。 新しい VHD の更新は、メンテナンス期間とサージ設定に従って中断されます。 このオプションを選んだ場合、追加の VHD コストは発生しません。 このチャネルを使用する場合、Linux の無人アップグレードは既定で無効になります。 ノード イメージのアップグレードでは、非推奨になったパッチ バージョンであっても、Kubernetes のマイナー バージョンがまだサポートされている限り、サポートされます。 ノード イメージは AKS でテストされ、完全に管理され、安全なデプロイ プラクティスで適用されます

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

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

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-os-upgrade-channel SecurityPatch \
        --generate-ssh-keys
    

既存のクラスター上でノード 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 でテストされ、完全に管理され、安全なデプロイ プラクティスで適用されます。 リリースに関するよりリアルタイムな情報については、リリース トラッカーの AKS ノード イメージに関するページを参照してください 毎週。

Note

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

ノード チャネルの既知の制限事項

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

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

Note

SecurityPatch チャネルには CLI バージョン 2.61.0 以降を使用します。

ノード 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 では常にノードの再イメージ化が発生しますか?

AKS では、完全に適用するために再イメージ化が必要になる可能性がある特定のカーネル パッケージなど、どうしても必要な場合のみに再イメージ化が制限されます。 SecurityPatch は、中断を可能な限り最小限に抑えるように設計されています。 AKS では、ノードの再イメージ化が必要ないと判断された場合、ポッドをドレインすることなくライブ ノードにパッチが適用されます。そのような場合は VHD の更新が実行されません。

  • ノードに 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 のパッチとアップグレード ガイダンスのページを参照してください。