練習 - 將縮放物件部署到您的 Azure Kubernetes Service 叢集中
在本練習中,您會將縮放物件自訂資源定義 (CRD) 部署到您的 AKS 叢集中。 Scaler 物件包含了可將您已部署的應用程式連接到 KEDA 的觸發程序。 部署到 AKS 之後,KEDA 會監視 Redis 清單,如果清單長度超過定義的閾值則會擴大,如果清單長度低於定義的閾值則會縮小。
ScaledObject
資訊清單概觀
scaleTargetRef
:本區段描述 KEDA 觀察到的工作負載。scaleTargetRef: apiVersion: apps/v1 # Optional. Default: apps/v1 kind: deployment # Optional. Default: Deployment name: contoso-microservice # Mandatory. Must be in the same namespace as the ScaledObject envSourceContainerName: contoso-microservice # Optional. Default: .spec.template.spec.containers[0]
minReplicaCount
和maxReplicaCount
:這些屬性可決定 KEDA 用於縮放調整的複本範圍。 在這種情況下,您會指示 KEDA 從最小值 0 放大調整到最大值 20。minReplicaCount: 0 # Optional. Default: 0 maxReplicaCount: 20 # Optional. Default: 100
注意
minReplicaCount: 0
會將部署的預設複本計數從 1 變為 0。 如果服務閒置且未在處理任何事件,便會發生這種情況。 在這種情況下,如果 Redis 清單中沒有任何項目,而且服務仍處於閒置狀態,則 KEDA 會調整為零。advanced
:本區段與 KEDA 的進階自訂有關。restoreToOriginalReplicaCount
會指示 KEDA 在擴增事件數後將複本計數返回到原始值。 在這種情況下,您會將其設為false
(這會導致minReplicaCount
值縮小為零)。restoreToOriginalReplicaCount: false # Optional. Default: false horizontalPodAutoscalerConfig: # Optional. Section to specify HPA related options behavior: # Optional. Use to modify HPA's scaling behavior scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 15
triggers
:本區段使用scalers
來偵測是否應該啟用或停用物件,並為特定的事件來源提供自訂計量。listLength
計量會指示 KEDA 在清單中有十個項目時進行擴增。triggers: - type: redis metadata: # address: # Format must be host:port passwordFromEnv: REDIS_KEY listName: keda # Required listLength: "10" # Required enableTLS: "false" # optional databaseIndex: "0" # optional hostFromEnv: REDIS_HOST portFromEnv: REDIS_PORT
如需詳細資訊,請參閱 KEDA Scaler。
建立 ScaledObject
資訊清單
在 Cloud Shell 中,使用
touch
命令,為 Kubernetes 部署建立稱為scaled-object.yaml
的資訊清單檔:touch scaled-object.yaml
輸入
code .
,在 Cloud Shell 中開啟整合式編輯器開啟
scaled-object.yaml
檔案,並新增下列 YAML 的程式碼區段:apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: scaled-contoso spec: scaleTargetRef: apiVersion: apps/v1 # Optional. Default: apps/v1 kind: deployment # Optional. Default: Deployment name: contoso-microservice # Mandatory. Must be in the same namespace as the ScaledObject envSourceContainerName: contoso-microservice # Optional. Default: .spec.template.spec.containers[0] pollingInterval: 30 # Optional. Default: 30 seconds cooldownPeriod: 120 # Optional. Default: 300 seconds minReplicaCount: 0 # Optional. Default: 0 maxReplicaCount: 20 # Optional. Default: 100 advanced: # Optional. Section to specify advanced options restoreToOriginalReplicaCount: false # Optional. Default: false horizontalPodAutoscalerConfig: # Optional. Section to specify HPA related options behavior: # Optional. Use to modify HPA's scaling behavior scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 15 triggers: - type: redis metadata: # address: # Format must be host:port passwordFromEnv: REDIS_KEY listName: keda # Required listLength: "10" # Required enableTLS: "false" # optional databaseIndex: "0" # optional hostFromEnv: REDIS_HOST portFromEnv: REDIS_PORT
儲存資訊清單檔 (CTRL + S) 並關閉編輯器 (CTRL + Q)。
套用資訊清單
使用
kubectl apply
命令將資訊清單部署至叢集:kubectl apply -f ./scaled-object.yaml
您的輸出看起來應類似下列範例輸出:
scaledobject.keda.sh/scaled-contoso created
使用
kubectl get pods
命令來檢查執行中的 Pod 數目:kubectl get pods
您的輸出看起來應類似下列的範例輸出,其中一個 Pod 正在執行:
NAME READY STATUS RESTARTS AGE contoso-microservice-794d98b5-4flvg 1/1 Running 0 2m1s
定期執行
kubectl get pods
命令,以確認部署將根據工作的待處理項目 (Backlog) 來調整 Pod 數目。注意
如果您已安裝 Linux 公用程式監視,則可以使用
watch kubectl get pods
命令來查看 Pod 數的縮放調整以處理 Redis 清單項目。 如果沒有,您可以使用kubectl get pods -w
命令。您的輸出看起來應類似下列範例輸出:
NAME READY STATUS RESTARTS AGE contoso-microservice-794d98b5-4flvg 1/1 Running 0 3m contoso-microservice-794d98b5-4jpxp 1/1 Running 0 3m contoso-microservice-794d98b5-4lw7b 1/1 Running 0 2m15s contoso-microservice-794d98b5-5fqj5 1/1 Running 0 3m contoso-microservice-794d98b5-5kdbw 1/1 Running 0 2m15s
在處理所有項目且 cooldownPeriod
到期之後,您將會看到 Pod 的數目為零。 這是因為 KEDA 已移除所有執行中的複本,而且沒有任何剩餘的項目可供處理。