Azure Kubernetes Service (AKS) クラスターのアップグレードUpgrade an Azure Kubernetes Service (AKS) cluster

AKS クラスター ライフサイクルの一部には、最新の Kubernetes バージョンへの定期的なアップグレードの実行が含まれます。Part of the AKS cluster lifecycle involves performing periodic upgrades to the latest Kubernetes version. 最新のセキュリティ リリースを適用するか、アップグレードして最新の機能を入手することが重要です。It is important you apply the latest security releases, or upgrade to get the latest features. この記事では、AKS クラスター内のマスター コンポーネントまたは 1 つの既定のノード プールをアップグレードする方法について説明します。This article shows you how to upgrade the master components or a single, default node pool in an AKS cluster.

複数のノード プールまたは Windows Server ノードを使用する AKS クラスターについては、AKS 内のノード プールのアップグレードに関するページを参照してください。For AKS clusters that use multiple node pools or Windows Server nodes, see Upgrade a node pool in AKS.

開始する前にBefore you begin

この記事では、Azure CLI バージョン 2.0.65 以降を実行している必要があります。This article requires that you are running the Azure CLI version 2.0.65 or later. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

警告

AKS クラスターのアップグレードで、ノードの切断とドレインがトリガーされます。An AKS cluster upgrade triggers a cordon and drain of your nodes. 使用可能なコンピューティング クォータが少ない場合は、アップグレードが失敗する可能性があります。If you have a low compute quota available, the upgrade may fail. 詳しくは、「クォータの増加」をご覧ください。For more information, see increase quotas

利用できる AKS クラスターのアップグレードを確認するCheck for available AKS cluster upgrades

ご使用のクラスターに利用できる Kubernetes リリースを確認するには、az aks get-upgrades コマンドを使用します。To check which Kubernetes releases are available for your cluster, use the az aks get-upgrades command. 次の例では、myResourceGroupmyAKSCluster への使用可能なアップグレードを確認します。The following example checks for available upgrades to myAKSCluster in myResourceGroup:

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table

注意

サポートされている AKS クラスターをアップグレードする際に、Kubernetes マイナー バージョンをスキップすることはできません。When you upgrade a supported AKS cluster, Kubernetes minor versions cannot be skipped. すべてのアップグレードは、メジャー バージョン番号で順番に実行する必要があります。All upgrades must be performed sequentially by major version number. たとえば、1.14.x -> 1.15.x または 1.15.x -> 1.16.x の間のアップグレードは許可されていますが、1.14.x -> 1.16.x は許可されていません。For example, upgrades between 1.14.x -> 1.15.x or 1.15.x -> 1.16.x are allowed, however 1.14.x -> 1.16.x is not allowed.

複数のバージョンのスキップは、"サポートされていないバージョン" から "サポートされているバージョン" にアップグレードする場合にのみ可能です。Skipping multiple versions can only be done when upgrading from an unsupported version back to a supported version. たとえば、サポートされていない 1.10.x からサポートされている 1.15.x へのアップグレードは実行することができます。For example, an upgrade from an unsupported 1.10.x --> a supported 1.15.x can be completed.

次の出力例は、クラスターをバージョン 1.19.11.19.3 にアップグレードできることを示しています。The following example output shows that the cluster can be upgraded to versions 1.19.1 and 1.19.3:

Name     ResourceGroup    MasterVersion    Upgrades
-------  ---------------  ---------------  --------------
default  myResourceGroup  1.18.10          1.19.1, 1.19.3

アップグレードが利用できない場合は、次のメッセージが表示されます。If no upgrade is available, you will get the message:

ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.

ノード サージ アップグレードのカスタマイズCustomize node surge upgrade

重要

ノード サージには、アップグレード操作ごとに、要求された最大サージ カウントに対するサブスクリプション クォータが必要です。Node surges require subscription quota for the requested max surge count for each upgrade operation. たとえば、クラスターに 5 つのノード プールがあり、そのそれぞれに 4 つのノードが含まれる場合、合計で 20 個のノードがあります。For example, a cluster that has 5 node pools, each with a count of 4 nodes, has a total of 20 nodes. 各ノード プールの最大サージ値が 50% の場合、アップグレードを完了するには、10 ノード (2 ノード * 5 プール) の追加のコンピューティングおよび IP クォータが必要です。If each node pool has a max surge value of 50%, additional compute and IP quota of 10 nodes (2 nodes * 5 pools) is required to complete the upgrade.

Azure CNI を使用する場合は、サブネット内に使用可能な IP があることと、Azure CNI の IP 要件を満たしていることを検証します。If using Azure CNI, validate there are available IPs in the subnet as well to satisfy IP requirements of Azure CNI.

AKS は、既定で、1 つの追加ノードを使用してサージ操作するようにアップグレードを構成します。By default, AKS configures upgrades to surge with one additional node. 最大サージ設定の既定値は 1 です。これにより、AKS は、既存のアプリケーションの切断またはドレインの前に追加のノードを作成して古いバージョンのノードを置き換えることにより、ワークロードの中断を最小限に抑えることができます。A default value of one for the max surge settings will enable AKS to minimize workload disruption by creating an additional node before the cordon/drain of existing applications to replace an older versioned node. 最大サージ値をノード プールごとにカスタマイズすると、アップグレードの速度とアップグレードの中断とのトレードオフが可能になります。The max surge value may be customized per node pool to enable a trade-off between upgrade speed and upgrade disruption. 最大サージ値を大きくすることでアップグレード プロセスはより速く完了しますが、最大サージに大きな値を設定するとアップグレード プロセス中に中断が発生する可能性があります。By increasing the max surge value, the upgrade process completes faster, but setting a large value for max surge may cause disruptions during the upgrade process.

たとえば、最大サージ値が 100% の場合、(ノード数が 2 倍になり) 可能な限り最速のアップグレード プロセスが提供されますが、ノード プール内のすべてのノードが同時にドレインされます。For example, a max surge value of 100% provides the fastest possible upgrade process (doubling the node count) but also causes all nodes in the node pool to be drained simultaneously. テスト環境では、このようなより大きな値を使用することをお勧めします。You may wish to use a higher value such as this for testing environments. 運用ノード プールの場合は、max_surge 設定を 33% にすることをお勧めします。For production node pools, we recommend a max_surge setting of 33%.

AKS では、最大サージに対して整数値とパーセント値の両方を受け入れます。AKS accepts both integer values and a percentage value for max surge. たとえば、整数 "5" は、サージする 5 つの追加ノードを示します。An integer such as "5" indicates five additional nodes to surge. 値 "50%" は、プール内の現在のノード数の半分のサージ値を示します。A value of "50%" indicates a surge value of half the current node count in the pool. 最大サージ パーセント値には、最低 1%、最大 100% の値を指定できます。Max surge percent values can be a minimum of 1% and a maximum of 100%. パーセント値は、最も近いノード数に切り上げられます。A percent value is rounded up to the nearest node count. アップグレード時に最大サージ値が現在のノード数より小さい場合、現在のノード数が最大サージ値に使用されます。If the max surge value is lower than the current node count at the time of upgrade, the current node count is used for the max surge value.

アップグレード中、最大サージ値には、最小値を 1 とし、最大値をノード プール内のノード数とする値を指定することができます。During an upgrade, the max surge value can be a minimum of 1 and a maximum value equal to the number of nodes in your node pool. より大きな値を設定することもできますが、最大サージに使用されるノードの最大数は、アップグレード時のプール内のノードの数を超えることはありません。You can set larger values, but the maximum number of nodes used for max surge won't be higher than the number of nodes in the pool at the time of upgrade.

重要

ノード プールの最大サージ設定は永続的です。The max surge setting on a node pool is permanent. 以降の Kubernetes アップグレードまたはノード バージョンのアップグレードでは、この設定が使用されます。Subsequent Kubernetes upgrades or node version upgrades will use this setting. ノード プールの最大サージ値はいつでも変更できます。You may change the max surge value for your node pools at any time. 運用ノード プールの場合は、最大サージ設定を 33% にすることをお勧めします。For production node pools, we recommend a max-surge setting of 33%.

新規または既存のノード プールの最大サージ値を設定するには、次のコマンドを使用します。Use the following commands to set max surge values for new or existing node pools.

# Set max surge for a new node pool
az aks nodepool add -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33%
# Update max surge for an existing node pool 
az aks nodepool update -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 5

AKS クラスターのアップグレードUpgrade an AKS cluster

AKS クラスターに利用できるバージョンの一覧を参照し、az aks upgrade コマンドを使用してアップグレードします。With a list of available versions for your AKS cluster, use the az aks upgrade command to upgrade. アップグレード プロセス中、AKS によって次のことが行われます。During the upgrade process, AKS will:

  • 指定された Kubernetes バージョンを実行するクラスターに 1 つの新しいバッファー ノード (または最大サージに構成されている数のノード) が追加されます。add a new buffer node (or as many nodes as configured in max surge) to the cluster that runs the specified Kubernetes version.
  • 実行中のアプリケーションの中断を最小限に抑えるために、古いノードのいずれかの切断とドレインが実行されます (最大サージを使用している場合は、指定されたバッファー ノードの数と同じ数のノードの切断とドレインが同時に実行されます)。cordon and drain one of the old nodes to minimize disruption to running applications (if you're using max surge it will cordon and drain as many nodes at the same time as the number of buffer nodes specified).
  • 古いノードが完全にドレインされると、新しいバージョンを受け取るための再イメージ化が実行され、次にアップグレードされるノード用のバッファー ノードになります。When the old node is fully drained, it will be reimaged to receive the new version and it will become the buffer node for the following node to be upgraded.
  • このプロセスは、クラスター内のすべてのノードがアップグレードされるまで繰り返されます。This process repeats until all nodes in the cluster have been upgraded.
  • プロセスの最後に、最後にバッファー ノードが削除され、既存のエージェント ノードの数とゾーン バランスが維持されます。At the end of the process, the last buffer node will be deleted, maintaining the existing agent node count and zone balance.
az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version KUBERNETES_VERSION

ノード数にもよりますが、クラスターのアップグレードには数分かかります。It takes a few minutes to upgrade the cluster, depending on how many nodes you have.

重要

PodDisruptionBudgets (PDB) で一度に少なくとも 1 つのポッド レプリカを確実に移動できるようにします。そうしない場合、ドレインまたは強制削除操作は失敗します。Ensure that any PodDisruptionBudgets (PDBs) allow for at least 1 pod replica to be moved at a time otherwise the drain/evict operation will fail. ドレイン操作が失敗した場合、アプリケーションが中断されないように、アップグレード操作は設計によって失敗します。If the drain operation fails, the upgrade operation will fail by design to ensure that the applications are not disrupted. 操作を停止させる原因 (間違った PDB やクォータの不足など) を解消し、操作をやり直してください。Please correct what caused the operation to stop (incorrect PDBs, lack of quota, and so on) and re-try the operation.

アップグレードが成功したことを確認するには、az aks show コマンドを使用します。To confirm that the upgrade was successful, use the az aks show command:

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

次の出力例は、クラスターが現在 1.13.10 で実行されていることを示しています。The following example output shows that the cluster now runs 1.13.10:

Name          Location    ResourceGroup    KubernetesVersion    ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  -------------------  ----------------------------------------------
myAKSCluster  eastus      myResourceGroup  1.18.10              Succeeded            myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io

自動アップグレード チャネルを設定するSet auto-upgrade channel

クラスターの手動アップグレードに加え、クラスターに自動アップグレード チャネルを設定できます。In addition to manually upgrading a cluster, you can set an auto-upgrade channel on your cluster. 次のアップグレード チャネルを使用できます。The following upgrade channels are available:

チャネルChannel アクションAction Example
none 自動アップグレードを無効にし、クラスターをその現行バージョンの Kubernetes で維持します。disables auto-upgrades and keeps the cluster at its current version of Kubernetes 既定の設定 (変更されていない場合)Default setting if left unchanged
patch サポートされる最新版のパッチが利用できるようになったとき、それにクラスターを自動アップグレードします。マイナー バージョンはそのまま維持されます。automatically upgrade the cluster to the latest supported patch version when it becomes available while keeping the minor version the same. たとえば、クラスターでバージョン 1.17.7 を実行しているとき、バージョン 1.17.91.18.41.18.61.19.1 が利用できる場合、クラスターは 1.17.9 にアップグレードされます。For example, if a cluster is running version 1.17.7 and versions 1.17.9, 1.18.4, 1.18.6, and 1.19.1 are available, your cluster is upgraded to 1.17.9
stable マイナー バージョン N-1 でサポートされる最新のパッチ リリースにクラスターが自動アップグレードされます。N はサポートされる最新のマイナー バージョンです。automatically upgrade the cluster to the latest supported patch release on minor version N-1, where N is the latest supported minor version. たとえば、クラスターでバージョン 1.17.7 を実行しているとき、バージョン 1.17.91.18.41.18.61.19.1 が利用できる場合、クラスターは 1.18.6 にアップグレードされます。For example, if a cluster is running version 1.17.7 and versions 1.17.9, 1.18.4, 1.18.6, and 1.19.1 are available, your cluster is upgraded to 1.18.6.
rapid サポートされる最新のマイナー バージョンでサポートされる最新のパッチ リリースにクラスターが自動アップグレードされます。automatically upgrade the cluster to the latest supported patch release on the latest supported minor version. クラスターの Kubernetes バージョンが N-2 マイナー バージョンの位置にある場合 (N はサポートされる最新のマイナー バージョン)、クラスターはまず、N-1 マイナー バージョンでサポートされる最新のパッチ バージョンにアップグレードされます。In cases where the cluster is at a version of Kubernetes that is at an N-2 minor version where N is the latest supported minor version, the cluster first upgrades to the latest supported patch version on N-1 minor version. たとえば、クラスターでバージョン 1.17.7 を実行しているとき、バージョン 1.17.91.18.41.18.61.19.1 が利用できる場合、クラスターはまず 1.18.6 にアップグレードされ、その後、1.19.1 にアップグレードされます。For example, if a cluster is running version 1.17.7 and versions 1.17.9, 1.18.4, 1.18.6, and 1.19.1 are available, your cluster first is upgraded to 1.18.6, then is upgraded to 1.19.1.

注意

クラスターの自動アップグレードは Kubernetes の GA バージョンにのみアップグレードされ、プレビュー バージョンに更新されることはありません。Cluster auto-upgrade only updates to GA versions of Kubernetes and will not update to preview versions.

クラスターの自動アップグレードは、クラスターの手動アップグレードを同じプロセスに従います。Automatically upgrading a cluster follows the same process as manually upgrading a cluster. 詳細については、「AKS クラスターのアップグレード」を参照してください。For more details, see Upgrade an AKS cluster.

AKS クラスターのクラスター自動アップグレードはプレビュー機能です。The cluster auto-upgrade for AKS clusters is a preview feature.

重要

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。AKS preview features are available on a self-service, opt-in basis. プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。Previews are provided "as is" and "as available," and they're excluded from the service-level agreements and limited warranty. AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。AKS previews are partially covered by customer support on a best-effort basis. そのため、これらの機能は、運用環境での使用を意図していません。As such, these features aren't meant for production use. AKS プレビュー機能は、Azure Government または Azure China 21Vianet クラウドでは使用できません。AKS preview features aren't available in Azure Government or Azure China 21Vianet clouds. 詳細については、次のサポート記事を参照してください。For more information, see the following support articles:

AutoUpgradePreview 機能フラグは、次の例のとおり、az feature register コマンドを使用して登録します。Register the AutoUpgradePreview feature flag by using the az feature register command, as shown in the following example:

az feature register --namespace Microsoft.ContainerService -n AutoUpgradePreview

状態が [登録済み] と表示されるまでに数分かかります。It takes a few minutes for the status to show Registered. 登録の状態は、az feature list コマンドで確認できます。Verify the registration status by using the az feature list command:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AutoUpgradePreview')].{Name:name,State:properties.state}"

準備ができたら、az provider register コマンドを使用して、Microsoft.ContainerService リソース プロバイダーの登録を更新します。When ready, refresh the registration of the Microsoft.ContainerService resource provider by using the az provider register command:

az provider register --namespace Microsoft.ContainerService

クラスターの作成時に自動アップグレード チャネルを設定するには、次の例のように、auto-upgrade-channel パラメーターを使用します。To set the auto-upgrade channel when creating a cluster, use the auto-upgrade-channel parameter, similar to the following example.

az aks create --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable --generate-ssh-keys

既存のクラスターに自動アップグレード チャネルを設定するには、次の例のように、auto-upgrade-channel パラメーターを更新します。To set the auto-upgrade channel on existing cluster, update the auto-upgrade-channel parameter, similar to the following example.

az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable

次のステップNext steps

この記事では、既存の AKS クラスターをアップグレードする方法について説明しました。This article showed you how to upgrade an existing AKS cluster. AKS クラスターのデプロイと管理の詳細については、一連のチュートリアルを参照してください。To learn more about deploying and managing AKS clusters, see the set of tutorials.