您可以透過指令列或在設定覆寫中,擴充 Kubernetes 中執行的大部分服務。您可以在 overrides.yaml 檔案中,為 Apigee Hybrid 執行階段服務設定資源調度參數。
| 服務 | 導入方式 | 資源調度 |
|---|---|---|
| Cassandra | ApigeeDatastore (CRD) | 請參閱「調度 Cassandra 資源」。 |
| Ingress/LoadBalancer | 部署作業問題 |
使用
|
| 記錄器 | DaemonSet | DaemonSet 會管理所有節點上的 Pod 副本,因此當您擴充 Pod 時,DaemonSet 也會擴充。 |
| MART Apigee Connect Watcher |
ApigeeOrganization (CRD) | 如要透過設定進行調整,請增加 Deployment 的 mart: replicaCountMax: 2 replicaCountMin: 1 watcher: replicaCountMax: 2 replicaCountMin: 1 connectAgent: replicaCountMax: 2 replicaCountMin: 1 這些 Deployment 會使用水平 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=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
- 套用修補程式。請注意,這個範例假設
kubectl位於PATH中: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
- 確認變更:
kubectl get hpa -n $NAMESPACE
以環境為基礎的資源調度
根據預設,系統會在機構層級說明縮放比例。您可以在 overrides.yaml 檔案中指定環境專屬的縮放比例,藉此覆寫預設設定,如下列範例所示:
envs:
# Apigee environment name
- name: test
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 欄位,設定目標服務的擴大和縮減行為。混合式部署中的任何其他元件,都無法使用以指標為準的自動調度功能。
您可以根據下列指標調整資源調度:
| 指標 | 評估 | 注意事項 |
|---|---|---|
| serverNioTaskWaitTime | 執行階段例項中,處理佇列在 http 層級處理 Proxy 要求時的平均等待時間 (以皮秒為單位)。 | 這項指標會評估 Proxy 要求和回應的數量及酬載大小所造成的影響。 |
| serverMainTaskWaitTime | 執行個體中處理佇列的平均等待時間 (以皮秒為單位),適用於處理政策的 Proxy 要求。 | 這項指標會評估附加至 Proxy 請求流程的政策複雜程度所造成的影響。 |
以下範例來自 overrides.yaml 中的 runtime 節,說明混合式實作中用於調整 apigee-runtime Pod 大小的標準參數 (和允許的範圍):
hpaMetrics: serverMainTaskWaitTime: 400M (300M to 450M) serverNioTaskWaitTime: 400M (300M to 450M) targetCPUUtilizationPercentage: 75 hpaBehavior: scaleDown: percent: periodSeconds: 60 (30 - 180) value: 20 (5 - 50) pods: periodSeconds: 60 (30 - 180) value: 2 (1 - 15) selectPolicy: Min stabilizationWindowSeconds: 120 (60 - 300) scaleUp: percent: periodSeconds: 60 (30 - 120) value: 20 (5 - 100) pods: periodSeconds: 60 (30 - 120) value: 4 (2 - 15) selectPolicy: Max stabilizationWindowSeconds: 30 (30 - 120)
設定更積極的資源調度方式
提高擴充政策的 percent 和 pods 值,會產生更積極的擴充政策。同樣地,增加 scaleDown 中的 percent 和 pods 值,會導致積極的縮減政策。例如:
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 設定值,以實作較不激進的擴充和縮減政策。例如:
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 欄位,根據指標執行資源調度,請參閱
資源調度政策。
停用以指標為準的自動調整資源配置功能
系統預設會啟用以指標為準的資源調度功能,且無法完全停用,但您可以設定指標門檻,避免觸發這項功能。產生的調度資源行為與 CPU 調度資源相同。舉例來說,您可以使用下列設定,避免觸發以指標為準的縮放作業:
hpaMetrics: serverMainTaskWaitTime: 4000M serverNioTaskWaitTime: 4000M 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
疑難排解
本節說明如何排解設定縮放和自動縮放功能時可能遇到的常見錯誤。
HPA 會顯示指標值的 unknown
如果以指標為準的資源調度功能無法運作,且 HPA 顯示的指標值為 unknown,請使用下列指令檢查 HPA 輸出內容:
kubectl describe hpa HPA_NAME
執行指令時,請將 HPA_NAME 替換為要查看的 HPA 名稱。
輸出內容會顯示服務的 CPU 目標和使用率,指出在沒有以指標為準的調度機制時,CPU 調度機制會正常運作。如要瞭解 HPA 使用多個參數時的行為,請參閱「依據多個指標進行調度」。