연습 - Azure Kubernetes Service 클러스터에 스케일 개체 배포
이 연습에서는 크기 조정 개체 CRD(사용자 지정 리소스 정의)를 AKS 클러스터에 배포합니다. 스케일러 개체에는 배포된 애플리케이션을 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가 스케일에 사용하는 복제본의 범위를 결정합니다. 이 경우에는 최소 0부터 최대 20개까지 크기를 조정하도록 KEDA에 지시합니다.minReplicaCount: 0 # Optional. Default: 0 maxReplicaCount: 20 # Optional. Default: 100
참고 항목
minReplicaCount: 0
는 배포 기본 복제본 수를 1에서 0으로 전환합니다. 이는 서비스가 유휴 상태이고 이벤트를 처리하지 않는 경우에 발생합니다. 이 경우 Redis 목록에 항목이 없고 서비스가 유휴 상태로 유지되는 경우 KEDA가 0으로 크기를 조정합니다.advanced
: 이 섹션은 KEDA의 고급 사용자 지정과 관련이 있습니다.restoreToOriginalReplicaCount
확장 이벤트 후 복제본(replica) 개수를 원래 값으로 반환하도록 KEDA에 지시합니다. 이 경우 이 값을false
로 설정하면minReplicaCount
값이 0으로 스케일 다운됩니다.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
는 목록에 항목이 10개 있을 때 스케일 업하도록 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 스케일러를 참조하세요.
ScaledObject
매니페스트 만들기
Cloud Shell에서 다음 명령을 사용하여
touch
호출scaled-object.yaml
되는 Kubernetes 배포에 대한 매니페스트 파일을 만듭니다.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
명령을 실행하여 배포가 작업의 백로그에 따라 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 수가 0임을 알 수 있습니다. KEDA가 실행 중인 모든 복제본을 제거하고 처리할 항목이 없기 때문입니다.