Azure Kubernetes Service (AKS)でノード中断ポリシーを構成する (プレビュー)

この記事では、ノードの再イメージ化とノード再デプロイのトリガーを必要とする操作が Azure Kubernetes Service (AKS) クラスターで許可されるタイミングを制御するために、ノード中断ポリシーを構成および管理する方法について説明します。

前提条件

Important

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。

aks-preview Azure CLI 拡張機能をインストールする

  1. aks-preview コマンドを使用して az extension add 拡張機能をインストールします。

    az extension add --name aks-preview
    
  2. az extension update コマンドを使って拡張機能の最新バージョンに更新します。

    az extension update --name aks-preview
    

ノード中断ポリシープレビュー機能を登録する

az feature register コマンドを使用して、ノード中断ポリシー プレビュー機能を登録します。

az feature register --namespace "Microsoft.ContainerService" --name "NodeDisruptionProfile"

状態が [登録済み] と表示されるまでに数分かかります。

新しいクラスターでノード中断ポリシーを構成する

az aks create パラメーターを --node-disruption-policy (既定)、Allow、またはAllowDuringMaintenanceWindowのいずれかのポリシー構成に設定して、Block コマンドを使用して、ノード中断ポリシーを構成した新しい AKS クラスターを作成します。

中断を伴う操作をいつでも許可する (既定)

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy Allow \
    --generate-ssh-keys

メンテナンス期間中にのみ中断操作を許可する

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy AllowDuringMaintenanceWindow \
    --generate-ssh-keys

Important

AllowDuringMaintenanceWindowを使用する場合は、必ずaksManagedNodeOSUpgradeScheduleメンテナンス期間を構成してください。 それ以外の場合、中断操作は無期限に許可されます。 詳細については、「計画メンテナンスを使用して、Azure Kubernetes Service クラスターのアップグレードをスケジュールおよび制御する」を参照してください

中断を伴うすべての操作をブロックする

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --node-disruption-policy Block \
    --generate-ssh-keys

既存のクラスターでのノード中断ポリシーの更新

az aks update パラメーターを次のいずれかのポリシー構成に設定して、--node-disruption-policy コマンドを使用して、既存の AKS クラスターのノード中断ポリシーを更新します:Allow (既定)、AllowDuringMaintenanceWindow、またはBlock

メンテナンス期間中に操作を許可するようにポリシーを変更する

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy AllowDuringMaintenanceWindow

中断を伴うすべての操作をブロックするようにポリシーを変更する

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy Block

いつでも操作を許可するようにポリシーを元に戻す

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-disruption-policy Allow

ノード中断ポリシーの構成を確認する

az aks show コマンドを使用して、ノード中断ポリシーの構成を確認します。

az aks show \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
    --output tsv

出力には、 AllowAllowDuringMaintenanceWindowBlockなど、現在のポリシー設定が表示されます。

ブロックされた操作を処理する

ノード中断ポリシーが中断操作をブロックする場合は、 メンテナンス期間を待 つか、 ポリシーを一時的に変更できます。

メンテナンス期間を待つ

AllowDuringMaintenanceWindowを使用している場合は、次のメンテナンス期間中に実行するように操作をスケジュールします。 az aks maintenanceconfiguration list コマンドを使用して、構成済みのメンテナンス期間を表示できます。

az aks maintenanceconfiguration list \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster

ポリシーを一時的に変更する

  1. Allowaz aks update に設定されている --node-disruption-policy コマンドを使用して、ポリシーをAllowに更新します。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Allow
    
  2. サービス中断を伴う操作を実行してください。 次の例では、 az aks update コマンドを使用してカスタム CA 証明書を更新します。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --custom-ca-trust-certificates <path-to-certificate-file>
    
  3. az aks update コマンドを使用して、元のポリシーを復元します。 次の例では、--node-disruption-policyBlockを復元します。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Block
    

ノード プールの手動アップグレードを必要とする操作

ノード中断ポリシーで 制御されない 一部の操作では、構成の変更後に手動でノード プールをアップグレードする必要があります。 記録される操作には次のようなものがあります。

  • SSH アクセス方法の変更や SSH 公開キーの更新など、SSH 構成の変更。
  • IMDS 制限の変更 (IMDS 制限の有効化または無効化など)。
  • ネットワーク分離クラスターのブートストラップ プロファイル ACR 名の変更。
  • 送信の種類の変更 (クラスターエグレス ルーティングの変更など)。

これらの操作では、構成を変更した後、 az aks nodepool upgrade コマンドを手動で実行する必要があります。 例えば次が挙げられます。

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name <nodepool-name> \
    --node-image-only

ノード中断ポリシーの対象となる操作の詳細については、「 ノード中断ポリシーの概要」を参照してください。

ノード中断ポリシーに関する問題のトラブルシューティング

操作が予期せずブロックされました

操作が予期せずブロックされた場合は、次の手順を使用して問題のトラブルシューティングを行います。

  1. az aks show コマンドを使用して、現在のポリシー設定を確認します。

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
        --output tsv
    
  2. AllowDuringMaintenanceWindowを使用している場合は、az aks maintenanceconfiguration show コマンドを使用してメンテナンス期間の構成を確認します。

    az aks maintenanceconfiguration show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name aksManagedNodeOSUpgradeSchedule
    
  3. 現在の時刻がメンテナンス期間内にあるかどうかを確認します。

メンテナンス期間が構成されていない

ポリシーを AllowDuringMaintenanceWindow に設定してもメンテナンス期間を構成しない場合は、中断を伴う操作がすべて 許可されます

az aks maintenanceconfiguration add コマンドを使用してメンテナンスウィンドウを設定します。

az aks maintenanceconfiguration add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name aksManagedNodeOSUpgradeSchedule \
    --schedule-type Weekly \
    --day-of-week Sunday \
    --interval-weeks 1 \
    --duration 4 \
    --start-hour 2