次の方法で共有


Azure Kubernetes Service (AKS) のノード プールをアップグレードする

この記事では、1 つのノード プールをアップグレードする方法と、Azure Kubernetes Service (AKS) の複数のノード プールのクラスター コントロール プレーンをアップグレードする方法について説明します。

ベスト プラクティスとして、AKS クラスター内のすべてのノード プールを同じ Kubernetes バージョンにアップグレードする必要があります。 [az aks upgrade][az-aks-upgrade] の既定の動作では、この配置を実現するために、すべてのノード プールをコントロール プレーンと共にアップグレードします。 個々のノード プールをアップグレードする機能を使用すると、ローリング アップグレードを実行し、ノード プール間でポッドをスケジュールして、アプリケーションのアップタイムを維持できます。

単一 ノード プールをアップグレードする

ノード プール オペレーティング システム (OS) イメージのバージョンは、クラスターの Kubernetes バージョンに関連付けられています。 OS イメージのアップグレードは、クラスターのアップグレード後にのみ取得されます。

  1. [az aks get-upgrades][az-aks-get-upgrades] コマンドを使用して、使用可能なアップグレードがあるかどうかを確認します。

    az aks get-upgrades --resource-group <resource-group-name> --name <cluster-name>
    
  2. [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
    
  3. [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) でのノード プールの管理」を参照してください。