본문으로 건너뛰기

KEDA CRD 가이드

ScaledObject

ScaledObject는 Deployment, StatefulSet, /scale subresource가 정의된 Custom Resource를 스케일링할 수 있습니다.

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
spec:
scaleTargetRef:
name: <name>
triggers:
- type: <type>
metricType: AverageValue
metadata:
<key>: <value>
경고

처리가 오래걸리는 작업에 대해, 스케일 다운이 발생하면, 처리가 완료되지 않은 작업이 중단될 수 있습니다. 이 경우 terminationGracePeriodSeconds를 사용하거나, ScaledJob를 활용하는 방향으로 변경해야합니다.

  • metadata
    • annotations
      • autoscaling.keda.sh/force-activation: "true"
  • spec
    • scaleTargetRef
      • 타겟 리소스는 같은 Namespace에 존재해야합니다.
      • apiVersion: apps/v1
      • kind: Deployment
      • name: <name>
      • envSourceContainerName: <containerName>
        • 기본값은 .spec.template.spec.containers[0].name 입니다.
    • pollingInterval: 30
      • trigger 확인 간격입니다.
      • 단위는 초입니다.
    • cooldownPeriod: 300
      • 마지막으로 trigger가 활성화된 이후 idle 상태가 되기까지 대기하는 시간(1 -> 0)입니다.
      • 단위는 초입니다.
    • initialCooldownPeriod: 0
    • idleReplicaCount: 0
      • idle 상태에서 유지할 Pod 개수로, minReplicaCount보다 작아야합니다.
      • 설정하지 않으면 minReplicaCount가 적용됩니다.
      • 0 만 설정 가능합니다.
    • minReplicaCount: 0
      • 최소 Pod 개수입니다.
    • maxReplicaCount: 100
      • 최대 Pod 개수입니다.
    • fallback
      • failureThreshold: <count>
      • replicas: <count>
      • behavior: static
        • static: fallback이 활성화되면, fallback.replicas가 적용됩니다.
        • currentReplicas: fallback이 활성화되면, 현재 Pod 수를 유지합니다.
        • currentReplicasIfHigher: fallback.replicas와 현재 Pod 수 중 더 큰 값을 유지합니다.
        • currentReplicasIfLower: fallback.replicas와 현재 Pod 수 중 더 작은 값을 유지합니다.
    • advanced
      • restoreToOriginalReplicaCount: false
        • ScaledObject가 삭제되었을 때, 원래 .spec.replicas 수로 복구할지 여부입니다.
      • horizontalPodAutoscalerConfig
      • scalingModifiers
    • triggers: []
      • trigger 결과 중 가장 큰 값으로 스케일링합니다.
      • type: <type>
      • name: <name>
        • 기본값은 type에 따라 자동 생성된 값입니다.
      • metricType: AverageValue
        • AverageValue
          • currentMetricValue = <metric>/currentReplicas
          • desiredMetricValue는 평균 값이고, 측정된 <metric>은 총 합일 때 사용할 수 있습니다.
        • Value
          • currentMetricValue = <metric>
          • desiredMetricValue와 측정된 <metric>이 모두 평균값을 의미할 때 사용할 수 있습니다.
        • Utilization: <usage>/<requested>의 평균값으로, CPU, Memory 타입 trigger에서만 사용가능합니다.
      • useCachedMetrics: false
      • metadata
        • <key>: <value> 형태로 trigger 별로 설정할 수 있습니다.
      • authenticationRef

ScaledJob

apiVersion: keda.sh/v1alpha1
kind: ScaledJob
spec:
jobTargetRef: