ランタイム サービスのスケーリングと自動スケーリング

Kubernetes で実行されるほとんどのサービスは、コマンドラインまたは構成のオーバーライドでスケーリングできます。Apigee ハイブリッド ランタイム サービスのスケーリング パラメータは、overrides.yaml ファイルで設定できます。

サービス 実装方法 スケーリング
Cassandra ApigeeDatastore(CRD) Cassandra のスケーリングをご覧ください。
Ingress / LoadBalancer Deployment Anthos Service Mesh は、水平 Pod 自動スケーリング(HPA)を使用します。
Logger DaemonSet すべてのノードで DaemonSet が Pod のレプリカを管理します。そのため、Pod 自体をスケーリングすると DaemonSet もスケーリングされます。
MART
Apigee Connect
Watcher
ApigeeOrganization(CRD)

構成でスケーリングするには、martwatcherconnectAgent スタンザに対する Deployment の replicaCountMin 構成プロパティの値を増やします。例:

mart:
 replicaCountMin: 2
 replicaCountMax: 1

watcher:
 replicaCountMin: 2
 replicaCountMax: 1

connectAgent:
 replicaCountMin: 2
 replicaCountMax: 1

これらの Deployment では自動スケーリングに HorizontalPodAutoscaler が使用されます。Deployment オブジェクトの targetCPUUtilizationPercentage プロパティにスケールアップのしきい値を設定します。この値を超えると、Kubernetes によって replicaCountMax の値に達するまで Pod が追加されます。

構成プロパティの設定の詳細については、ランタイム プレーン コンポーネントを管理するをご覧ください。

Runtime
Synchronizer
UDCA
ApigeeEnvironment(CRD) 構成でスケーリングするには、オーバーライド ファイルで udcasynchronizerruntime スタンザに対する replicaCountMin プロパティの値を増やします。次に例を示します。
synchronizer:
 replicaCountMin: 10
 replicaCountMax: 1

runtime:
 replicaCountMin: 10
 replicaCountMax: 1

udca:
 replicaCountMin: 10
 replicaCountMax: 1

注: これらの変更は、オーバーライド ファイル内のすべての環境に適用されます。環境ごとにスケーリングをカスタマイズする場合は、後述の高度な構成をご覧ください。

これらの Deployment では自動スケーリングに HorizontalPodAutoscaler が使用されます。Deployment オブジェクトの targetCPUUtilizationPercentage プロパティにスケールアップのしきい値を設定します。この値を超えると、Kubernetes によって replicaCountMax の値に達するまで Pod が追加されます。

構成プロパティの設定の詳細については、ランタイム プレーン コンポーネントを管理するをご覧ください。

高度な構成

状況によっては、高度なスケーリング オプションを使用する必要が生じることがあります。次のような場合です。

  • 環境ごとに異なるスケーリング オプションを設定する。たとえば、env1 の minReplica が 5 で、env2 の minReplica が 2 の場合など。
  • 環境内のコンポーネントごとに異なるスケーリング オプションを設定する。たとえば、udca コンポーネントの maxReplica が 5 で、synchronizer コンポーネントの maxReplica が 2 の場合など。

次の例では、kubernetes patch コマンドを使用して runtime コンポーネントの maxReplicas プロパティを変更する方法を示します。

  1. 次のコマンドで、使用する環境変数を作成します。
    export ENV=my-environment-name
    export NAMESPACE=apigee  #the namespace where apigee is deployed
    export COMPONENT=runtime #can be udca or synchronizer
    export MAX_REPLICAS=2
    export MIN_REPLICAS=1
  2. パッチを適用します。この例では、PATH 内に kubectl があることを前提としています。
    kubectl patch apigeeenvironment -n $NAMESPACE \
      $(kubectl get apigeeenvironments -n $NAMESPACE -o jsonpath='{.items[?(@.spec.name == "'$ENV'" )]..metadata.name}') \
      --patch "$(echo -e "spec:\n  components:\n    $COMPONENT:\n      autoScaler:\n        maxReplicas: $MAX_REPLICAS\n        minReplicas: $MIN_REPLICAS")" \
      --type merge
    
  3. 変更を確認します:
    kubectl get hpa -n $NAMESPACE