KEDA CRD 가이드
ScaledObject
References
ScaledObject는 Deployment, StatefulSet, /scale subresource가 정의된 Custom Resource를 스케일링할 수 있습니다.
scaleTargetRef에 해당하는 리소스가 IaC에서 관리되는 경우 .spec.replicas를 제거해주세요. ScaledObject가 .spec.replicas를 제어하고 있더라도, IaC에서 업데이트 시 순간적으로 원하지 않는 scale-in/out이 발생할 수 있습니다.
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
spec:
scaleTargetRef:
name: <name>
triggers:
- type: <type>
metricType: AverageValue
metadata:
<key>: <value>
경고
처리가 오래걸리는 작업에 대해, 스케일 다운이 발생하면, 처리가 완료되지 않은 작업이 중단될 수 있습니다. 이 경우 terminationGracePeriodSeconds를 사용하거나, ScaledJob를 활용하는 방향으로 변경해야합니다.
metadataannotationsautoscaling.keda.sh/force-activation: "true"
specscaleTargetRef- 타겟 리소스는 같은 Namespace에 존재해야합니다.
apiVersion: apps/v1kind: Deploymentname: <name>envSourceContainerName: <containerName>- 기본값은
.spec.template.spec.containers[0].name입니다.
- 기본값은
pollingInterval: 30- trigger 확인 간격입니다.
- 단위는 초입니다.
cooldownPeriod: 300- 마지막으로 trigger가 활성화된 이후 idle 상태가 되기까지 대기하는 시간(1 -> 0)입니다.
- 단위는 초입니다.
initialCooldownPeriod: 0idleReplicaCount: 0- idle 상태에서 유지할 Pod 개수로,
minReplicaCount보다 작아야합니다. - 설정하지 않으면
minReplicaCount가 적용됩니다. - 0 만 설정 가능합니다.
- idle 상태에서 유지할 Pod 개수로,
minReplicaCount: 0- 최소 Pod 개수입니다.
maxReplicaCount: 100- 최대 Pod 개수입니다.
fallbackfailureThreshold: <count>replicas: <count>behavior: staticstatic: fallback이 활성화되면,fallback.replicas가 적용됩니다.currentReplicas: fallback이 활성화되면, 현재 Pod 수를 유지합니다.currentReplicasIfHigher:fallback.replicas와 현재 Pod 수 중 더 큰 값을 유지합니다.currentReplicasIfLower:fallback.replicas와 현재 Pod 수 중 더 작은 값을 유지합니다.
advancedrestoreToOriginalReplicaCount: false- ScaledObject가 삭제되었을 때, 원래
.spec.replicas수로 복구할지 여부입니다.
- ScaledObject가 삭제되었을 때, 원래
horizontalPodAutoscalerConfig- KEDA에 의해 생성될 HorizontalPodAutoscaler의 설정입니다.
name: keda-hpa-<scaledObjectName>behavior
scalingModifiers
triggers: []- trigger 결과 중 가장 큰 값으로 스케일링합니다.
type: <type>name: <name>- 기본값은 type에 따라 자동 생성된 값입니다.
metricType: AverageValueAverageValuecurrentMetricValue = <metric>/currentReplicas- desiredMetricValue는 평균 값이고, 측정된
<metric>은 총 합일 때 사용할 수 있습니다.
ValuecurrentMetricValue = <metric>- desiredMetricValue와 측정된
<metric>이 모두 평균값을 의미할 때 사용할 수 있습니다.
Utilization:<usage>/<requested>의 평균값으로, CPU, Memory 타입 trigger에서만 사용가능합니다.
useCachedMetrics: falsemetadata<key>: <value>형태로 trigger 별로 설정할 수 있습니다.
authenticationRef
ScaledJob
apiVersion: keda.sh/v1alpha1
kind: ScaledJob
spec:
jobTargetRef: