您可以透過指令列或設定覆寫,調整在 Kubernetes 中執行的大部分服務。您可以在 overrides.yaml
檔案中設定 Apigee Hybrid 執行階段服務的資源調度參數。
服務 | 實作方式 | 資源調度 |
---|---|---|
Cassandra | ApigeeDatastore (CRD) | 請參閱「調整 Cassandra 資源」。 |
Ingress/LoadBalancer | 部署作業問題 | Cloud Service Mesh 使用水平 Pod 自動調度資源 (HPA)。 |
Logger | DaemonSet | DaemonSet 會管理所有節點的 Pod 備份,因此在您縮放 Pod 時,這些備份也會縮放。 |
MART Apigee Connect Watcher |
ApigeeOrganization (CRD) | 如要透過設定進行調整,請針對 mart: replicaCountMax: 2 replicaCountMin: 1 watcher: replicaCountMax: 2 replicaCountMin: 1 connectAgent: replicaCountMax: 2 replicaCountMin: 1 這些部署會使用水平 Pod 自動配置器進行自動調度。將 Deployment 物件的 如要進一步瞭解如何設定設定屬性,請參閱「管理執行階段平面元件」。 |
執行階段 同步器 UDCA |
ApigeeEnvironment (CRD) | 如要透過設定進行縮放,請在覆寫檔案中,為 udca 、synchronizer 和/或 runtime 段落增加 replicaCountMin 屬性的值。例如:
synchronizer: replicaCountMax: 10 replicaCountMin: 1 runtime: replicaCountMax: 10 replicaCountMin: 1 udca: replicaCountMax: 10 replicaCountMin: 1 注意: 這些變更會套用至覆寫檔案中的所有環境。 如果您想為每個環境自訂調整,請參閱下方的「進階設定」。 這些部署作業會使用水平 Pod 自動配置器進行自動調度。將 Deployment 物件的 如要進一步瞭解如何設定設定屬性,請參閱「管理執行階段平面元件」。 |
進階設定
在某些情況下,您可能需要使用進階縮放選項。情境範例包括:
- 為每個環境設定不同的縮放選項。例如,env1 的
minReplica
為 5,env2 的minReplica
為 2。 - 為環境中的每個元件設定不同的縮放選項。舉例來說,
udca
元件的maxReplica
為 5,synchronizer
元件的maxReplica
為 2。
以下範例說明如何使用 kubernetes patch
指令變更 runtime
元件的 maxReplicas
屬性:
- 建立要搭配指令使用的環境變數:
export ENV_NAME=my-environment-name
export ENV_RELEASE_NAME=$ENV_NAME # the Helm release name for the environment
export APIGEE_NAMESPACE=apigee #the namespace where Apigee is deployed
export COMPONENT=runtime #can be udca or synchronizer
export MAX_REPLICAS=2
export MIN_REPLICAS=1
- 套用修補程式。請注意,這個範例假設
kubectl
位於PATH
中:kubectl patch apigeeenvironment -n $APIGEE_NAMESPACE \ $(kubectl get apigeeenvironments -n $APIGEE_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
- 驗證變更:
kubectl get hpa -n $APIGEE_NAMESPACE
以環境為依據的資源調度
根據預設,資源配置會在機構層級說明。您可以在 overrides.yaml
檔案中指定環境專屬縮放比例,藉此覆寫預設設定,如以下範例所示:
envs: # Apigee environment name - name: ENV_NAME> components: # Environment-specific scaling override # Otherwise, uses scaling defined at the respective root component runtime: replicaCountMin: 2 replicaCountMax: 20
以指標為依據的調度
透過指標為基礎的調度功能,執行階段可以使用 CPU 和應用程式指標來調度 apigee-runtime
Pod。Kubernetes 水平 Pod 自動配置器 (HPA) API 會使用 hpaBehavior
欄位來設定目標服務的縮放和縮減行為。混合式部署中其他元件無法使用以指標為依據的調整功能。
您可以根據下列指標調整資源調度:
指標 | 測量 | 注意事項 |
---|---|---|
serverMainTaskWaitTime | 代理要求處理政策在執行階段執行個體中處理佇列的平均等待時間 (以毫秒為單位)。 | 這項指標會評估附加至 Proxy 要求流程的政策複雜度所造成的影響。 |
serverNioTaskWaitTime | 在 HTTP 層級,代理要求在執行階段執行個體中處理佇列的平均等待時間 (以毫秒為單位)。 | 這個指標可評估 Proxy 要求和回應的數量和酬載大小。 |
以下範例取自 overrides.yaml
中的 runtime
節,說明在混合式實作中,縮放 apigee-runtime
容器的標準參數 (和允許範圍):
runtime: # the following parameters configure metrics-based scaling hpaMetrics: serverMainTaskWaitTime: 400M # (range: 300M to 450M) serverNioTaskWaitTime: 400M # (range: 300M to 450M) targetCPUUtilizationPercentage: 75 hpaBehavior: scaleDown: percent: periodSeconds: 60 # (range: 30 - 180) value: 20 # (range: 5 - 50) pods: periodSeconds: 60 # (range: 30 - 180) value: 2 # (range: 1 - 15) selectPolicy: Min stabilizationWindowSeconds: 120 # (range: 60 - 300) scaleUp: percent: periodSeconds: 60 # (range: 30 - 120) value: 20 # (range: 5 - 100) pods: periodSeconds: 60 # (range: 30 - 120) value: 4 # (range: 2 - 15) selectPolicy: Max stabilizationWindowSeconds: 30 # (range: 30 - 120)
如要套用這些設定,請更新各個環境的 apigee-runtime
圖表。例如:
helm upgrade $ENV_RELEASE_NAME apigee-runtime/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=$ENV_NAME \ -f overrides.yaml
啟用或停用以指標為依據的調整功能
系統預設會啟用以指標為依據的資源調度功能。如要啟用或停用以指標為依據的調度功能,請將 customAutoscaling.enabled
屬性設為 true
或 false
。更新 apigee-telemetry
圖表,將變更套用至 customAutoscaling.enabled
屬性。例如:
helm upgrade telemetry apigee-telemetry/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides.yaml
設定更積極的資源調度
提高擴大政策的 percent
和 pods
值,可讓擴大政策更積極。同樣地,如果在 scaleDown
中增加 percent
和 pods
值,就會導致縮減規模的政策過於激進。例如:
runtime: # ... hpaMetrics: serverMainTaskWaitTime: 400M serverNioTaskWaitTime: 400M targetCPUUtilizationPercentage: 75 hpaBehavior: scaleDown: percent: periodSeconds: 60 value: 20 pods: periodSeconds: 60 value: 4 selectPolicy: Min stabilizationWindowSeconds: 120 scaleUp: percent: periodSeconds: 60 value: 30 pods: periodSeconds: 60 value: 5 selectPolicy: Max stabilizationWindowSeconds: 30
在上述範例中,scaleDown.pods.value
會增加至 5,scaleUp.percent.value
會增加至 30,scaleUp.pods.value
則會增加至 5。
設定較不積極的資源調度
您也可以調降 hpaBehavior
設定值,以便實施較溫和的縮放政策。例如:
runtime: # ... hpaMetrics: serverMainTaskWaitTime: 400M serverNioTaskWaitTime: 400M targetCPUUtilizationPercentage: 75 hpaBehavior: scaleDown: percent: periodSeconds: 60 value: 10 pods: periodSeconds: 60 value: 1 selectPolicy: Min stabilizationWindowSeconds: 180 scaleUp: percent: periodSeconds: 60 value: 20 pods: periodSeconds: 60 value: 4 selectPolicy: Max stabilizationWindowSeconds: 30
在上例中,scaleDown.percent.value
會減少至 10,scaleDown.pods.value
會減少至 1,而 scaleUp.stablizationWindowSeconds
會增加至 180。
如要進一步瞭解如何使用 hpaBehavior
欄位以指標為基礎執行資源調度,請參閱
資源調度政策。
疑難排解
本節將說明設定調整和自動調整功能時可能遇到的常見錯誤,以及如何排解這些錯誤。
HPA 會顯示指標值 unknown
如果以指標為依據的資源調度功能無法運作,且 HPA 顯示指標值為 unknown
,請使用下列指令檢查 HPA 輸出內容:
kubectl describe hpa HPA_NAME
執行指令時,請將 HPA_NAME 替換為要查看的水平 Pod 自動配置器名稱。
輸出結果會顯示服務的 CPU 目標和使用率,表示在沒有以指標為依據的調整功能時,CPU 調整功能會運作。如要瞭解使用多個參數的 HPA 行為,請參閱「根據多個指標進行調度」。