Azure CLI を使用して Kubernetes Event-driven Autoscaling (KEDA) アドオンをインストールする

重要

AKS の KEDA アドオンでは現在、 メトリック サーバー または オペレーターの CPU 要求または制限およびその他の Helm 値の変更はサポートされていません。 アドオンを使用する場合は、この制限に注意してください。 ご質問がある場合は、こちらでお気軽にお問い合せ 下さい。

この記事では、Azure CLI を使用して Kubernetes Event-driven Autoscaling (KEDA) アドオンを Azure Kubernetes Service (AKS) にインストールする方法について説明します。

重要

クラスター Kubernetes バージョンによって、AKS クラスターにインストールされる KEDA のバージョンが決まります。 各 AKS バージョンに対応する KEDA バージョンを確認するには、Kubernetes コンポーネント バージョン テーブルの AKS マネージド アドオン列を参照してください。

GA Kubernetes バージョンの場合は、AKS はテーブル内の対応する KEDA マイナー バージョンを完全にサポートします。 Kubernetes プレビュー バージョンと最新の KEDA パッチは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

注

KEDA バージョン 2.15 以降では、 ポッド ID のサポートを削除する破壊的変更が導入されています。 Pod ID を使用している場合は、認証にワークロード ID を使用することをお勧めします。 KEDA マネージド アドオンは現在、KEDA バージョン 2.15 以降を実行していませんが、AKS プレビュー バージョン 1.31 で実行を開始します。

ワークロード ID を使用してアプリケーションを安全にスケーリングする方法の詳細については、チュートリアルを参照してください。 KEDAの破壊的変更および非推奨ポリシーを参照するには、公式ドキュメントをご覧ください。

開始する前に

注

Microsoft Entra ワークロード ID を使用していて、ワークロード ID の前に KEDA を有効にする場合は、以下の手順に従って、適切な環境変数を挿入できるように KEDA オペレーター ポッドを再起動する必要があります。

  1. kubectl rollout restart deployment keda-operator -n kube-system を実行してポッドを再起動します。

  2. kubectl get pod -n kube-system を使用して、keda-operator で始まるポッドを見つけて、KEDA オペレーター ポッドを取得します。

  3. kubectl describe pod <keda-operator-pod> -n kube-system を実行して、環境変数が正常に挿入されたことを確認します。 Environment の下に、AZURE_TENANT_ID、AZURE_FEDERATED_TOKEN_FILE、AZURE_AUTHORITY_HOST の値が表示されます。

Azure CLI を使用して KEDA アドオンをインストールする

KEDA アドオンをインストールするには、 クラスターの作成時または更新時に --enable-keda を使用します。

AKS クラスター上の KEDA アドオンを有効にする

注

KEDA にはさまざまなカスタマイズ オプションが用意されていますが、KEDA アドオンには現在、基本的な一般的な構成が用意されています。

カスタム構成が必要な場合は、KEDA YAML ファイルを手動で編集してインストールをカスタマイズできます。 Azure によるカスタム構成のサポートは提供されていません。

KEDA アドオンが有効になっている新しい AKS クラスターを作成する

  1. az group create コマンドを使用して、リソース グループを作成します。

    az group create --name myResourceGroup --location eastus
    
  2. az aks create コマンドを使用して新しい AKS クラスターを作成し、--enable-keda フラグを使用して KEDA アドオンを有効にします。

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-keda \
        --generate-ssh-keys
    

既存の AKS クラスター上の KEDA アドオンを有効にする

  • az aks update コマンドを使用して既存のクラスターを更新し、--enable-keda フラグを使用して KEDA アドオンを有効にします。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-keda 
    

クラスターの資格情報を取得する

  • az aks get-credentials コマンドを使用して AKS クラスターの資格情報を取得します。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

KEDA アドオンがクラスターにインストールされていることを確認する

  • az aks show コマンドを使用して KEDA アドオンがクラスターにインストールされていることを確認し、--query パラメーターを workloadAutoScalerProfile.keda.enabled に設定します。

    az aks show --resource-group myResourceGroup --name myAKSCluster --query "workloadAutoScalerProfile.keda.enabled" 
    

    次の出力例は、KEDA アドオンがクラスターにインストールされていることを示しています。

    true
    

クラスター上で KEDA が実行されていることを確認する

  • kubectl get pods コマンドを使用して、KEDA アドオンがクラスター上で実行されていることを確認します。

    kubectl get pods -n kube-system 
    

    次の出力例は、KEDA オペレーター、アドミッション フック、メトリック API サーバーがクラスターにインストールされていることを示しています。

    keda-admission-webhooks-**********-2n9zl           1/1     Running   0            3d18h
    keda-admission-webhooks-**********-69dkg           1/1     Running   0            3d18h
    keda-operator-*********-4hb5n                      1/1     Running   0            3d18h
    keda-operator-*********-pckpx                      1/1     Running   0            3d18h
    keda-operator-metrics-apiserver-**********-gqg4s   1/1     Running   0            3d18h
    keda-operator-metrics-apiserver-**********-trfcb   1/1     Running   0            3d18h
    

クラスターの KEDA のバージョンを確認する

KEDA のバージョンを確認するには、kubectl get crd/scaledobjects.keda.sh -o yaml を使用します。 次に例を示します。

kubectl get crd/scaledobjects.keda.sh -o yaml 

次の出力例は、app.kubernetes.io/version ラベルにおける KEDA の構成を表示します。

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.9.0
    meta.helm.sh/release-name: aks-managed-keda
    meta.helm.sh/release-namespace: kube-system
  creationTimestamp: "2023-08-09T15:58:56Z"
  generation: 1
  labels:
    app.kubernetes.io/component: operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: keda-operator
    app.kubernetes.io/part-of: keda-operator
    app.kubernetes.io/version: 2.10.1
    helm.toolkit.fluxcd.io/name: keda-adapter-helmrelease
    helm.toolkit.fluxcd.io/namespace: 64d3b6fd3365790001260647
  name: scaledobjects.keda.sh
  resourceVersion: "1421"
  uid: 29109c8c-638a-4bf5-ac1b-c28ad9aa11fa
spec:
  conversion:
    strategy: None
  group: keda.sh
  names:
    kind: ScaledObject
    listKind: ScaledObjectList
    plural: scaledobjects
    shortNames:
    - so
    singular: scaledobject
  scope: Namespaced
  # Redacted due to length

OOMKill エラーが発生している場合は、keda 演算子を垂直方向にスケーリングします

keda 演算子ポッドで OOMKill エラーが発生している場合は、 Vertical Pod Autoscaler (VPA) を使用して、CPU とメモリの制限を自動的に調整できます。

  1. az aks update コマンドを使用して、AKS クラスターで VPA を有効にします。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --enable-vpa
    
  2. 次の VPA 構成を使用して keda-operator-vpa.yaml という名前のファイルを作成し、keda-operator デプロイを対象とします。

    apiVersion: autoscaling.k8s.io/v1
    kind: VerticalPodAutoscaler
    metadata:
      name: keda-operator-vpa
    spec:
      targetRef:
        apiVersion: "apps/v1"
        kind: Deployment
        name: keda-operator
      updatePolicy:
        updateMode: "InPlaceOrRecreate"
    
  3. kubectl apply コマンドを使用して、VPA 構成をクラスターに適用します。

    kubectl apply -f keda-operator-vpa.yaml
    

    VPA は、監視された使用量に基づいて、keda オペレーター ポッドの CPU 要求とメモリ要求と制限を自動的に調整します。

AKS クラスター上の KEDA アドオンを無効にする

  • az aks update フラグを指定した --disable-keda コマンドを使用して、クラスター上の KEDA アドオンを無効にします。

    az aks update \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --disable-keda 
    

次のステップ

この記事では、Azure CLI を使用して AKS クラスターに KEDA アドオンをインストールする方法について説明しました。

クラスターに KEDA アドオンがインストールされている場合は、 サンプル アプリケーションをデプロイ してアプリのスケーリングを開始できます。

KEDA のトラブルシューティングについては、Kubernetes Event-driven Autoscaling (KEDA) アドオンのトラブルシューティングに関する記事を参照してください。

詳細については、アップストリーム KEDA のドキュメントを参照してください。