Azure Kubernetes Service (AKS) クラスターは、 Azure によって管理されるコントロール プレーン と 、ワークロードが実行されるノード プールという 2 つの主要なコンポーネントで構成されます。 この記事では、コントロール プレーンを個別にアップグレードすることに重点を置いています。これにより、ノード プールのアップグレードを個別に管理しながら、API サーバー機能に新しい Kubernetes バージョンを採用できます。
開始する前に
- Azure CLI を使っている場合、この記事では Azure CLI バージョン 2.34.1 以降が必要です。
az --versionコマンドを使用してバージョンを検索します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。 - Azure PowerShell を使う場合、この記事では、Azure PowerShell バージョン 5.9.0 以降が必要です。
Get-InstalledModule -Name Azコマンドレットを使用してバージョンを見つけます。 インストールまたはアップグレードする必要がある場合は、Azure PowerShell のインストールに関するページをご覧ください。 - アップグレード操作を実行するには、Azure Kubernetes Service共同作成者ロールまたは同等のアクセス許可が必要です。
- Kubernetes バージョン 1.30 および 1.27 LTS バージョンにアップグレードすると、ベータ API は既定で無効になります。
Warnung
アップグレードする前に十分なコンピューティング クォータがあることを確認します。 クォータが低い場合、アップグレードが失敗する可能性があります。 詳しくは、「クォータの増加」をご覧ください。
AKS アップグレードの種類の概要
次の表では、3 種類の AKS アップグレードの概要を示し、その範囲とユース ケースを示します。
| アップグレードの種類 | Scope | 利用シーン |
|---|---|---|
| コントロール プレーンのみ | API サーバー、etcd、コントローラー マネージャー、スケジューラ | ワークロードをアップグレードする前に新しい Kubernetes API をテストする |
| 完全なクラスター | コントロールプレーンと全てのノードプール | クラスターを最新の状態に保つための標準アップグレード |
| ノード プールのみ | 特定のノードプール | コントロール プレーンのアップグレード後の段階的ロールアウト |
ヒント
最初にコントロール プレーンをアップグレードすると、実行中のワークロードに影響を与える前に、Kubernetes API の互換性を検証できます。 ノード プールのアップグレード戦略については、「 ローリング アップグレードの構成」を参照してください。
Kubernetes バージョンのアップグレード規則
サポートされている LTS 以外の AKS クラスターをアップグレードする場合、Kubernetes のマイナー バージョンをスキップすることはできません。 すべてのアップグレードは、マイナー バージョン番号で順番に実行する必要があります。 たとえば、 1.28.x ->1.29.x または 1.29.x ->1.30.x のアップグレードが許可されます。 1.28.x ->1.30.x は許可されていません。
アップグレードがバージョン スキュー要件と検証チェックを満たしている場合、LTS クラスターは、AKS によって提供される上位の LTS バージョンに移行するときに、マイナー バージョンをスキップできます。 詳細については、「クラスターの アップグレード中に複数の AKS バージョンをスキップできますか?」を参照してください。
Kubernetes 1.28 以降では、コントロール プレーンはノード プールの前に最大 3 つのマイナー バージョンにすることができます。 たとえば、コントロール プレーンが 1.35.x の場合、ノード プールは 1.32.x、 1.33.x、 1.34.x、 または 1.35.x になります。 現在の制約については、 AKS バージョンスキュー ポリシーを参照してください。
利用可能な AKS アップグレードを確認する
ヒント
最新の AKS リリースと更新プログラムを最新の状態に保つには、 AKS リリース トラッカーを参照してください。
az aks get-upgrades コマンドを使用して、AKS クラスターで使用可能な Kubernetes リリースを確認します。
az aks get-upgrades --resource-group <resource-group-name> --name <cluster-name> --output table
次の出力例では、現在のバージョンが 1.28.9 として示され、使用できるバージョンが upgrades の下に一覧表示されます。
Name ResourceGroup MasterVersion Upgrades
------- --------------- --------------- --------------
default <resource-group-name> 1.28.9 1.29.2, 1.29.4
AKS コントロール プレーンのみをアップグレードする
Important
クラスターの自動アップグレードが有効になっている場合、コントロール プレーンのみのアップグレードを実行することはできません。 クラスターの自動アップグレードでは、コントロール プレーンとすべてのノード プールが常に一緒にアップグレードされます。
az aks upgradeフラグを指定して、--control-plane-onlyコマンドを使用してコントロール プレーンをアップグレードします。 次の例では、コントロール プレーンを Kubernetes バージョン 1.29.4 にアップグレードします。az aks upgrade \ --resource-group <resource-group-name> \ --name <cluster-name> \ --kubernetes-version 1.29.4 \ --control-plane-onlyaz aks showコマンドを使用して、コントロール プレーンのアップグレードが成功したことを確認します。az aks show --resource-group <resource-group-name> --name <cluster-name> --output table次の出力例は、コントロール プレーンが 1.29.4 で実行されるようになりました。
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------- ------------------------------------------------ <cluster-name> eastus <resource-group-name> 1.29.4 Succeeded <cluster-name>-dns-123abcd4.hcp.eastus.azmk8s.ioaz aks nodepool listコマンドを使用して、ノード プールのバージョンが変更されていないことを確認します。az aks nodepool list --resource-group <resource-group-name> --cluster-name <cluster-name> --query "[].{Name:name,Version:orchestratorVersion}" --output table出力では、ノード プールに以前の Kubernetes バージョンが表示されます。
完全な AKS クラスターをアップグレードする
注
クラスターの完全アップグレード中、AKS は最初にコントロール プレーンをアップグレードしてから、各ノード プールを順番にアップグレードします。 ノード プールのアップグレードの詳細については、「 ローリング アップグレードの構成」を参照してください。
az aks upgrade コマンドを使用して、クラスター全体 (コントロール プレーンとすべてのノード プール) をアップグレードします。 次の例では、クラスターを Kubernetes バージョン 1.29.4 にアップグレードします。
az aks upgrade \
--resource-group <resource-group-name> \
--name <cluster-name> \
--kubernetes-version 1.29.4
AKS コントロール プレーンのアップグレードに関してよく寄せられる質問 (FAQ)
コントロール プレーンのみのアップグレードでは、ノード プールもアップグレードされますか?
No. コントロール プレーンのみのアップグレードでは、ノード プールは変更されません。 クラスターの自動アップグレード の動作は異なります。コントロール プレーンのみのアップグレードはサポートされておらず、コントロール プレーンとすべてのノード プールをまとめてアップグレードします。
コントロール プレーンの前にノード プールをアップグレードできますか?
No. コントロール プレーンのバージョンは、常に任意のノード プール バージョン以上である必要があります。 最初にコントロール プレーンをアップグレードする必要があります。
コントロール プレーンのアップグレードにはどのくらいの時間がかかりますか?
アップグレード期間は、クラスターの状態とAzureの条件によって異なります。
az aks showまたはGet-AzAksClusterを使用してprovisioningStateを監視します。 プロビジョニング状態が Succeededされると、アップグレードが完了します。
コントロール プレーンのアップグレードに関する問題を解決する
アップグレードは使用できません
サポートされていないクラスターの場合は、 az aks get-upgrades を使用して、AKS がサポート対象のターゲットを提供しているかどうかを確認します。 ターゲットが使用可能な場合は、クラスター全体のアップグレードを実行します。 この復旧パスでは、コントロール プレーンのみのアップグレードはサポートされていません。
使用可能なターゲットがない場合は、クラスターが既にサポートされている最新バージョンに存在している可能性があります。 クラスターでサポートされていないバージョンが実行されている場合は、サポートされているバージョンの新しいクラスターを作成し、ワークロードを移行します。
非推奨の API が原因でアップグレードに失敗しました
アップグレードする前に、 kube-no-trouble (kubent) などのツールを使用して非推奨の API を確認します。
kubent
このコマンドは、現在の kubeconfig コンテキストからアクセスできるリソースをスキャンして、非推奨の Kubernetes API バージョンを探します。 出力では、Kubernetes バージョン別の結果がグループ化され、影響を受ける各リソースが KIND、 NAMESPACE、 NAME、および API_VERSIONによって識別されます。 アップグレードする前に、サポートされている API バージョンを使用するように、一覧表示されているすべてのリソースのソース マニフェストを更新します。