この記事では、1 つのノード プールをアップグレードする方法と、Azure Kubernetes Service (AKS) の複数のノード プールのクラスター コントロール プレーンをアップグレードする方法について説明します。
注
ベスト プラクティスとして、AKS クラスター内のすべてのノード プールを同じ Kubernetes バージョンにアップグレードする必要があります。 [az aks upgrade][az-aks-upgrade] の既定の動作では、この配置を実現するために、すべてのノード プールをコントロール プレーンと共にアップグレードします。 個々のノード プールをアップグレードする機能を使用すると、ローリング アップグレードを実行し、ノード プール間でポッドをスケジュールして、アプリケーションのアップタイムを維持できます。
単一 ノード プールをアップグレードする
注
ノード プール オペレーティング システム (OS) イメージのバージョンは、クラスターの Kubernetes バージョンに関連付けられています。 OS イメージのアップグレードは、クラスターのアップグレード後にのみ取得されます。
[
az aks get-upgrades][az-aks-get-upgrades] コマンドを使用して、使用可能なアップグレードがあるかどうかを確認します。az aks get-upgrades --resource-group <resource-group-name> --name <cluster-name>[
az aks nodepool upgrade][az-aks-nodepool-upgrade] コマンドを使用して、特定のノード プールをアップグレードします。az aks nodepool upgrade \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --kubernetes-version <kubernetes-version> \ --no-wait[
az aks nodepool list][az-aks-nodepool-list] コマンドを使用して、ノード プールの状態を確認します。az aks nodepool list --resource-group <resource-group-name> --cluster-name <cluster-name>次の出力例は、ノード プールが アップグレード 状態であることを示しています。
[ { ... "count": 3, ... "name": "<node-pool-name>", "orchestratorVersion": "<kubernetes-version>", ... "provisioningState": "Upgrading", ... "vmSize": "Standard_DS2_v2", ... }, { ... "count": 2, ... "name": "<node-pool-name-2>", "orchestratorVersion": "<kubernetes-version-2>", ... "provisioningState": "Succeeded", ... "vmSize": "Standard_DS2_v2", ... } ]ノードを指定したバージョンにアップグレードするには数分かかります。 アップグレードが完了すると、ノード プールの
provisioningStateが [成功] に変わります。
複数のノード プールを使用することでクラスターのコントロール プレーンをアップグレードする
AKS クラスターには、Kubernetes バージョンが関連付けられた 2 つのクラスター リソース オブジェクトがあります。クラスター コントロール プレーンの Kubernetes バージョンと、Kubernetes バージョンのノード プールです。
コントロール プレーンとノード プールのアップグレード動作
コントロール プレーンは、1 つまたは複数のノード プールにマップされます。 アップグレード操作の動作は、使用する Azure CLI コマンドと指定したフラグによって異なります。
-
az aks upgradeは、コントロール プレーンとクラスター内のすべてのノード プールを同じ Kubernetes バージョンにアップグレードします。 -
az aks upgradeフラグを使用すると、--control-plane-onlyではクラスター コントロール プレーンのみがアップグレードされ、すべてのノード プールは変更されません。 -
az aks nodepool upgradeは、指定された Kubernetes バージョンのターゲット ノード プールのみがアップグレードされます。
アップグレードの検証規則
注
Kubernetes は、標準のセマンティック バージョニングのバージョン管理スキームを使用します。 バージョン番号は x.y.z として表されます。ここで、x はメジャー バージョン、y はマイナー バージョン、z は修正プログラムのバージョンです。 たとえば、バージョン 1.12.6 では、 1 がメジャー バージョン、 12 がマイナー バージョン、 6 がパッチ バージョンです。 コントロール プレーンの Kubernetes バージョンと初期ノード プールは、クラスター作成時に設定されます。 その他のノード プールには、クラスターに追加されるときに Kubernetes バージョンが設定されます。 Kubernetes バージョンは、ノード プール間、およびノード プールとコントロール プレーン間では異なる場合があります。
クラスターのコントロール プレーンとノード プールの Kubernetes のアップグレードは、次の規則のセットを使用して検証されます:
ノード プールをアップグレードするための有効なバージョンの規則:
- ノード プールのバージョンは、コントロール プレーンと同じ "メジャー" バージョンである必要があります。
- ノード プールの "マイナー" バージョンは、コントロール プレーンのバージョンの 2 つ以内の "マイナー" バージョンでなければなりません。
- ノード プールのバージョンを、コントロールの
major.minor.patchバージョンよりも大きくすることはできません。
アップグレード操作を送信するための規則:
- コントロール プレーンでも、ノード プールでも、Kubernetes バージョンをダウングレードすることはできません。
- ノード プールの Kubernetes バージョンが指定されていない場合、動作は使用中のクライアントによって異なります。 Azure Resource Manager (ARM) テンプレートでは、宣言はノード プールに対して定義されている既存のバージョンにフォールバックします。 何も設定しない場合は、コントロール プレーンバージョンにフォールバックします。
- 1 つのコントロール プレーンまたはノード プール リソースに対して複数の操作を同時に送信することはできません。 コントロール プレーンまたはノード プールは、特定の時点でアップグレードまたはスケールできます。
次の手順: AKS でノード プールを管理する
AKS でのノード プールの管理の詳細については、「 Azure Kubernetes Service (AKS) でのノード プールの管理」を参照してください。