Kubernetes イベント ドリブン自動スケーリング アドオンのトラブルシューティング
この記事では、Kubernetes イベント ドリブン自動スケーリング(KEDA)アドオンをマイクロソフト Azure Kubernetes Service(AKS)にトラブルシューティングする方法について説明します。 KEDA AKS アドオンを配置するとき、アプリケーション 自動スケーラーの構成に関連する問題が発生する場合があります。 この記事では、エラーをトラブルシューティングし、アドオンに影響を与える一般的な問題を解決することに役立ちますが、公式な KEDA の「よくあるご質問」と「トラブルシューティング ガイド」には記載されていません。
前提条件
- Kubernetes kubectl ツール。 Azure CLI を使用して kubectl をインストールするには、az aks install-cli コマンドを実行します。
KEDA アドオンのサポート
KEDA アドオンは、他の AKS アドオンと同様のサポート モデルに従います。 Azure KEDA スケーラーはすべてサポートされていますが、AKS ではサードパーティのスケーラーはサポートされていません。 サードパーティのスケーラーで問題が発生した場合は、公式の KEDA GitHub リポジトリで問題を開きます。
トラブルシューティングのチェックリスト
次のセクションの手順を使用して、KEDA コンポーネントの確認とトラブルシューティングを行います。
利用可能な KEDA バージョンを確認する
使用可能な KEDA バージョンは、 kubectl get コマンドを使用して確認できます。
kubectl get crd/scaledobjects.keda.sh -o custom-columns='APP:.metadata.labels.app\.kubernetes\.io/version'
コマンド出力には、インストールされているバージョンの KEDA が表示されます。
APP
2.8.1
クラスター ファイアウォールが正しく構成されていることを確認する
KEDA は起動できないため、アプリケーションを正常にスケーリングできない可能性があります。
オペレーター ログを確認すると、次のテキストのようなエラー エントリが見つかる場合があります。
1.6545953013458195e+09 ERROR Failed to get API Group-Resources {"error": "Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"}
sigs.k8s.io/controller-runtime/pkg/cluster.New
/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/cluster/cluster.go:160
sigs.k8s.io/controller-runtime/pkg/manager.New
/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.11.2/pkg/manager/manager.go:313
main.main
/workspace/main.go:87
runtime.main
/usr/local/go/src/runtime/proc.go:255
1.6545953013459463e+09 ERROR setup unable to start manager {"error": "Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"}
main.main
/workspace/main.go:97
runtime.main
/usr/local/go/src/runtime/proc.go:255
メトリック サーバー セクションで、KEDA を起動できないことが検出される場合があります。
I0607 09:53:05.297924 1 main.go:147] keda_metrics_adapter "msg"="KEDA Version: 2.7.1"
I0607 09:53:05.297979 1 main.go:148] keda_metrics_adapter "msg"="KEDA Commit: "
I0607 09:53:05.297996 1 main.go:149] keda_metrics_adapter "msg"="Go Version: go1.17.9"
I0607 09:53:05.298006 1 main.go:150] keda_metrics_adapter "msg"="Go OS/Arch: linux/amd64"
E0607 09:53:15.344324 1 logr.go:279] keda_metrics_adapter "msg"="Failed to get API Group-Resources" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344360 1 main.go:104] keda_metrics_adapter "msg"="failed to setup manager" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344378 1 main.go:209] keda_metrics_adapter "msg"="making provider" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
E0607 09:53:15.344399 1 main.go:168] keda_metrics_adapter "msg"="unable to run external metrics adapter" "error"="Get \"https://10.0.0.1:443/api?timeout=32s\": EOF"
このシナリオは、ファイアウォールが正しく構成されていないため、KEDA アドオンを起動できないことを意味している可能性があります。 KEDA が正しく動作することを確認するには、 Azure グローバルに必要なネットワーク規則を満たすようにファイアウォールを構成します。
自己管理型オープン ソース KEDA インストールを使用してクラスターのアドオンを有効にする
理論上、Kubernetes では 1 つのメトリック サーバーしかインストールできない場合でも、KEDA を何度もインストールできます。 ただし、1 つのインストールのみが機能するため、複数のインストールはお勧めしません。
KEDA アドオンが AKS クラスターにインストールされると、オープンソース KEDA の以前のインストールがオーバーライドされ、アドオンが引き継がれるようになります。 このシナリオでは、自己インストール KEDA デプロイのカスタマイズと構成が失われ、適用されなくなります。
既存の自動スケーリングは引き続き動作する可能性がありますが、この状況ではリスクが発生します。 KEDA アドオンは異なる方法で構成され、マネージド ID などの機能はサポートされません。 インストール中にエラーが発生しないようにするには、KEDA アドオンを有効にする前に、既存の KEDA インストールをアンインストールすることをお勧めします。
KEDA で使用されるメトリック アダプターを確認するには、 kubectl get
コマンドを実行します。
kubectl get APIService/v1beta1.external.metrics.k8s.io -o custom-columns='NAME:.spec.service.name,NAMESPACE:.spec.service.namespace'
概要には、Kubernetes がメトリックの取得に使用するサービスと名前空間が示されています。
NAME NAMESPACE
keda-operator-metrics-apiserver kube-system
警告
名前空間が kube-system
されていない場合、AKS アドオンは無視され、別のメトリック サーバーが使用されます。
ワークロード ID が正しく挿入されていないときに KEDA オペレーター ポッドを再起動する方法
Microsoft Entra ワークロード IDを使用していて、ワークロード IDを使用する前に KEDA を有効にする場合は、KEDA オペレーター ポッドを再起動する必要があります。 これにより、正しい環境変数が挿入されます。 これを行うには、次の手順を実行します。
次のコマンドを実行してポッドを再起動します。
kubectl rollout restart deployment keda-operator -n kube-system
次のコマンドを実行して KEDA オペレーター ポッドを取得し、名前が 'keda-operator' で始まるポッドを見つけます。
kubectl get pod -n kube-system
環境変数が正常に挿入されたことを確認するには、次のコマンドを実行します。
kubectl describe pod <keda-operator-pod-name> -n kube-system
変数が正常に挿入された場合は、Environment セクションに
AZURE_TENANT_ID
、AZURE_FEDERATED_TOKEN_FILE
、およびAZURE_AUTHORITY_HOST
の値が表示されます。
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。