この記事では、ノードの再イメージ化とノード再デプロイのトリガーを必要とする操作が Azure Kubernetes Service (AKS) クラスターで許可されるタイミングを制御するために、ノード中断ポリシーを構成および管理する方法について説明します。
前提条件
- ノード中断ポリシーの概要を確認して、ノード中断ポリシーのしくみと、ノード中断ポリシーの対象となる操作について説明します。
- Azure CLI バージョン 2.76.0 以降がインストールおよび構成されています。 CLI のバージョンを確認するには、
az --versionコマンドを実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。 - 既存の AKS クラスター、またはノード中断ポリシーが構成された新しい AKS クラスターを作成できます。
-
aks-previewAzure CLI拡張機能をインストールし、Node Disruption Policy プレビュー機能を登録します。
Important
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
aks-preview Azure CLI 拡張機能をインストールする
aks-previewコマンドを使用してaz extension add拡張機能をインストールします。az extension add --name aks-previewaz 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
出力には、 Allow、 AllowDuringMaintenanceWindow、 Blockなど、現在のポリシー設定が表示されます。
ブロックされた操作を処理する
ノード中断ポリシーが中断操作をブロックする場合は、 メンテナンス期間を待 つか、 ポリシーを一時的に変更できます。
メンテナンス期間を待つ
AllowDuringMaintenanceWindowを使用している場合は、次のメンテナンス期間中に実行するように操作をスケジュールします。
az aks maintenanceconfiguration list コマンドを使用して、構成済みのメンテナンス期間を表示できます。
az aks maintenanceconfiguration list \
--resource-group myResourceGroup \
--cluster-name myAKSCluster
ポリシーを一時的に変更する
Allowがaz aks updateに設定されている--node-disruption-policyコマンドを使用して、ポリシーをAllowに更新します。az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-disruption-policy Allowサービス中断を伴う操作を実行してください。 次の例では、
az aks updateコマンドを使用してカスタム CA 証明書を更新します。az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --custom-ca-trust-certificates <path-to-certificate-file>az aks updateコマンドを使用して、元のポリシーを復元します。 次の例では、--node-disruption-policyにBlockを復元します。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
ノード中断ポリシーの対象となる操作の詳細については、「 ノード中断ポリシーの概要」を参照してください。
ノード中断ポリシーに関する問題のトラブルシューティング
操作が予期せずブロックされました
操作が予期せずブロックされた場合は、次の手順を使用して問題のトラブルシューティングを行います。
az aks showコマンドを使用して、現在のポリシー設定を確認します。az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query "nodeDisruptionProfile.nodeDisruptionPolicy" \ --output tsvAllowDuringMaintenanceWindowを使用している場合は、az aks maintenanceconfiguration showコマンドを使用してメンテナンス期間の構成を確認します。az aks maintenanceconfiguration show \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name aksManagedNodeOSUpgradeSchedule現在の時刻がメンテナンス期間内にあるかどうかを確認します。
メンテナンス期間が構成されていない
ポリシーを 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