API の破壊的変更時に Azure Kubernetes Service (AKS) クラスターのアップグレードを自動的に停止する
この記事では、API の破壊的変更時に Azure Kubernetes Service (AKS) クラスターのアップグレードを自動的に停止する方法について説明します。
概要
サポートされている Kubernetes バージョンを継続して使用するには、お使いのクラスターを少なくとも年 1 回はアップグレードし、あらゆる中断の可能性に備える必要があります。 これらの中断には、API の破壊的変更、非推奨化、依存関係 (Helm や Container Storage Interface (CSI) など) によって発生するものが含まれます。 これらの中断を予測し、ダウンタイムを発生させずに重要なワークロードを移行することは困難な場合があります。
非推奨 API を含むマイナー バージョンの変更で構成されるアップグレード操作を自動的に停止し、問題について警告するように AKS クラスターを構成できます。 この機能は、予期しない中断を回避するのに役立ち、アップグレードを進める前に非推奨の API に対処する時間を確保できます。
開始する前に
開始する前に、以下の前提条件を満たしていることを確認してください。
- アップグレード操作は、クラスター コントロール プレーンの Kubernetes マイナー バージョンの変更である。
- アップグレード先の Kubernetes バージョンは 1.26 以降です。
- アップグレードする対象バージョンでの非推奨の API の使用が最終に確認されたのが、アップグレード操作の 12 時間以内である必要がある。 AKS では使用状況が 1 時間ごとに記録されるため、1 時間以内の非推奨の API の使用は、検出に表示されない可能性があります。
停止されるアップグレード操作を軽減する
前提条件を満たしている場合、アップグレードを試行すると、次のエラー メッセージ例のようなエラー メッセージを受け取ります。
Bad Request({
"code": "ValidationError",
"message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
"subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})
問題を軽減するために、非推奨の API の使用を削除する (推奨) か、検証を回避して API の変更を無視するという 2 つのオプションがあります。
非推奨の API の使用を削除する (推奨)
Azure portal で、クラスター リソースに移動し、[問題の診断と解決] を選びます
[作成、アップグレード、削除、スケーリング] > [Kubernetes API の非推奨化] を選びます。
最後に非推奨の API の使用状況が表示された時点から 12 時間待ちます。 非推奨の API の使用の動詞を調べて、それが監視かどうかを確認します。 watch の場合は、使用状況がゼロになるまで待つことができます。 (コンテナー分析情報を有効にし、kube 監査ログを調べて、過去の API 使用状況をチェックすることもできます。)
クラスターのアップグレードを再試行します。
検証を回避して API の変更を無視する
Note
この方法では、Azure CLI バージョン 2.53 以降を使用する必要があります。 aks-preview
CLI 拡張機能がインストールされている場合は、バージョン 0.5.154
以降に更新する必要があります。 対象となる Kubernetes バージョンの非推奨の API は長期的には機能しない可能性があるため、この方法はお勧めしません。 アップグレードが完了したら、これらをできるだけ早く削除することをお勧めします。
検証をバイパスして API の破壊的変更を無視するには、
az aks update
コマンドを使います。enable-force-upgrade
フラグを指定し、upgrade-override-until
プロパティを設定して、検証をバイパスする期間の終了を定義します。 値が設定されていない場合、ウィンドウは既定で現在の時刻から 3 日間に設定されます。 指定する日付と時刻は、将来のものである必要があります。az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
注意
Z
は、ゼロ UTC/GMT オフセットのゾーン指定子で、"Zulu" 時間とも呼ばれます。 この例では、ウィンドウの終了を13:00:00
GMT に設定します。 詳細については、「日付と時刻の組み合わせ」を参照してください。az aks upgrade
コマンドを使用してクラスターのアップグレードを再試行します。az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION
次のステップ
この記事では、API の破壊的変更時に AKS クラスターのアップグレードを自動的に停止する方法について説明しました。 AKS クラスターのその他のアップグレード オプションについては、「Azure Kubernetes Service (AKS) クラスターのアップグレード」を参照してください。
Azure Kubernetes Service
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示