๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค ํ™•์žฅ ๋ฐ ์ž๋™ ํ™•์žฅ

Kubernetes์—์„œ ์‹คํ–‰๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๋Š” ๋ช…๋ น์ค„ ๋˜๋Š” ๊ตฌ์„ฑ ์žฌ์ •์˜์—์„œ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. overrides.yaml ํŒŒ์ผ์—์„œ Apigee Hybrid ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ™•์žฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ตฌํ˜„ ๋ฐฉ์‹ ํ™•์žฅ
Cassandra ApigeeDatastore(CRD) Cassandra ํ™•์žฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์ธ๊ทธ๋ ˆ์Šค/LoadBalancer ๋ฐฐํฌ Cloud Service Mesh๋Š” ์ˆ˜ํ‰ํ˜• ํฌ๋“œ ์ž๋™ ํ™•์žฅ(HPA)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
Logger DaemonSet DaemonSets๋Š” ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ํฌ๋“œ์˜ ๋ณต์ œ๋ณธ์„ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ํฌ๋“œ ์ž์ฒด๋ฅผ ํ™•์žฅํ•  ๋•Œ ํฌ๋“œ๊ฐ€ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
MART
Apigee Connect
Watcher
ApigeeOrganization(CRD)

๊ตฌ์„ฑ์„ ํ†ตํ•ด ํ™•์žฅํ•˜๋ ค๋ฉด mart, watcher, connectAgent ์Šคํƒ ์ž์— ๋Œ€ํ•œ ๋ฐฐํฌ์˜ replicaCountMin ๊ตฌ์„ฑ ์†์„ฑ ๊ฐ’์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

mart:
  replicaCountMax: 2
  replicaCountMin: 1

watcher:
  replicaCountMax: 2
  replicaCountMin: 1

connectAgent:
  replicaCountMax: 2
  replicaCountMin: 1

์ด ๋ฐฐํฌ๋Š” ์ž๋™ ํ™•์žฅ์— ์ˆ˜ํ‰ํ˜• ํฌ๋“œ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ๊ฐ์ฒด์˜ targetCPUUtilizationPercentage ์†์„ฑ์„ ์ˆ˜์ง ํ™•์žฅ์„ ์œ„ํ•œ ๊ธฐ์ค€์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Kubernetes๊ฐ€ ์ตœ๋Œ€ replicaCountMax ๊ฐ’๊นŒ์ง€ ํฌ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์†์„ฑ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Ÿฐํƒ€์ž„
๋™๊ธฐํ™” ๋‹ด๋‹น์ž
UDCA
ApigeeEnvironment(CRD) ๊ตฌ์„ฑ์„ ํ†ตํ•ด ํ™•์žฅํ•˜๋ ค๋ฉด ์žฌ์ •์˜ ํŒŒ์ผ์—์„œ udca, synchronizer, runtime ์Šคํƒ ์ž์— ๋Œ€ํ•œ replicaCountMin ์†์„ฑ ๊ฐ’์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
synchronizer:
  replicaCountMax: 10
  replicaCountMin: 1

runtime:
  replicaCountMax: 10
  replicaCountMin: 1

udca:
  replicaCountMax: 10
  replicaCountMin: 1

์ฐธ๊ณ : ์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์žฌ์ •์˜ ํŒŒ์ผ์˜ ๋ชจ๋“  ํ™˜๊ฒฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํ™˜๊ฒฝ์˜ ํ™•์žฅ์„ ๋งž์ถค์„ค์ •ํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ๊ณ ๊ธ‰ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ๋ฐฐํฌ๋Š” ์ž๋™ ํ™•์žฅ์— ์ˆ˜ํ‰ํ˜• ํฌ๋“œ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ๊ฐ์ฒด์˜ targetCPUUtilizationPercentage ์†์„ฑ์„ ์ˆ˜์ง ํ™•์žฅ์„ ์œ„ํ•œ ๊ธฐ์ค€์ ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด Kubernetes๊ฐ€ ์ตœ๋Œ€ replicaCountMax ๊ฐ’๊นŒ์ง€ ํฌ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์†์„ฑ ์„ค์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ณ ๊ธ‰ ๊ตฌ์„ฑ

์ผ๋ถ€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๊ณ ๊ธ‰ ํ™•์žฅ ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ™˜๊ฒฝ๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ํ™•์žฅ ์˜ต์…˜ ์„ค์ •. ์˜ˆ๋ฅผ ๋“ค์–ด env1์˜ minReplica๊ฐ€ 5์ด๊ณ  env2์˜ minReplica๊ฐ€ 2์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
  • ํ™˜๊ฒฝ ๋‚ด์˜ ๊ฐ ๊ตฌ์„ฑ์š”์†Œ์— ์„œ๋กœ ๋‹ค๋ฅธ ํ™•์žฅ ์˜ต์…˜ ์„ค์ •. ์˜ˆ๋ฅผ ๋“ค์–ด udca ๊ตฌ์„ฑ์š”์†Œ์˜ maxReplica๊ฐ€ 5์ด๊ณ  synchronizer ๊ตฌ์„ฑ์š”์†Œ์˜ maxReplica๊ฐ€ 2์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” kubernetes patch ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ runtime ๊ตฌ์„ฑ์š”์†Œ์˜ maxReplicas ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  1. ๋‹ค์Œ ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    export ENV_NAME=my-environment-name
    export ENV_RELEASE_NAME=$ENV_NAME # the Helm release name for the environment
    export APIGEE_NAMESPACE=apigee  #the namespace where Apigee is deployed
    export COMPONENT=runtime #can be udca or synchronizer
    export MAX_REPLICAS=2
    export MIN_REPLICAS=1
  2. ํŒจ์น˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” kubectl์ด PATH์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
    kubectl patch apigeeenvironment -n $APIGEE_NAMESPACE \
      $(kubectl get apigeeenvironments -n $APIGEE_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
    
  3. ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    kubectl get hpa -n $APIGEE_NAMESPACE
    

ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜ ํ™•์žฅ

๊ธฐ๋ณธ์ ์œผ๋กœ ํ™•์žฅ์€ ์กฐ์ง ์ˆ˜์ค€์—์„œ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด overrides.yaml ํŒŒ์ผ์— ํ™˜๊ฒฝ๋ณ„ ํ™•์žฅ์„ ์ง€์ •ํ•˜์—ฌ ๊ธฐ๋ณธ ์„ค์ •์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

envs:
  # Apigee environment name
  - name: ENV_NAME>
    components:
    # Environment-specific scaling override
    # Otherwise, uses scaling defined at the respective root component
     runtime:
      replicaCountMin: 2
      replicaCountMax: 20

์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ

์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์—์„œ CPU์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ apigee-runtime ํฌ๋“œ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes ์ˆ˜ํ‰ํ˜• ํฌ๋“œ ์ž๋™ ํ™•์žฅ ์ฒ˜๋ฆฌ(HPA) API๋Š” hpaBehavior ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ ์„œ๋น„์Šค์˜ ์ˆ˜์ง ํ™•์žฅ ๋™์ž‘๊ณผ ์ถ•์†Œ ๋™์ž‘์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐฐํฌ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ์—๋Š” ์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ธก์ •ํ•ญ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ํ™•์žฅ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธก์ •ํ•ญ๋ชฉ ์ธก์ • ๊ณ ๋ ค์‚ฌํ•ญ
serverMainTaskWaitTime ํ”„๋ก์‹œ ์š”์ฒญ์ด ์ •์ฑ…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Ÿฐํƒ€์ž„ ์ธ์Šคํ„ด์Šค์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ์˜ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ์ธก์ •ํ•ญ๋ชฉ์€ ํ”„๋ก์‹œ ์š”์ฒญ ํ๋ฆ„์— ์—ฐ๊ฒฐ๋œ ์ •์ฑ…์—์„œ ๋ณต์žก์„ฑ์˜ ์˜ํ–ฅ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
serverNioTaskWaitTime http ๋ ˆ์ด์–ด์—์„œ ํ”„๋ก์‹œ ์š”์ฒญ์˜ ๋Ÿฐํƒ€์ž„ ์ธ์Šคํ„ด์Šค์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ์˜ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ์ธก์ •ํ•ญ๋ชฉ์€ ํ”„๋ก์‹œ ์š”์ฒญ ๋ฐ ์‘๋‹ต์˜ ์ˆ˜์™€ ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ์˜ ์˜ํ–ฅ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

overrides.yaml์˜ runtime ์Šคํƒ ์ž์˜ ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌํ˜„์—์„œ apigee-runtime ํฌ๋“œ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ๋งค๊ฐœ๋ณ€์ˆ˜(๋ฐ ํ—ˆ์šฉ ๋ฒ”์œ„)๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

runtime:
  # the following parameters configure metrics-based scaling
  hpaMetrics:
    serverMainTaskWaitTime: 400M # (range: 300M to 450M)
    serverNioTaskWaitTime: 400M # (range: 300M to 450M)
    targetCPUUtilizationPercentage: 75
  hpaBehavior:
    scaleDown:
      percent:
        periodSeconds: 60 # (range: 30 - 180)
        value: 20 # (range: 5 - 50)
      pods:
        periodSeconds: 60 # (range: 30 - 180)
        value: 2 # (range: 1 - 15)
      selectPolicy: Min
      stabilizationWindowSeconds: 120 # (range: 60 - 300)
    scaleUp:
      percent:
        periodSeconds: 60 # (range: 30 - 120)
        value: 20 # (range: 5 - 100)
      pods:
        periodSeconds: 60 # (range: 30 - 120)
        value: 4 # (range: 2 - 15)
      selectPolicy: Max
      stabilizationWindowSeconds: 30 # (range:  30 - 120)
  

๊ฐ ํ™˜๊ฒฝ์˜ apigee-runtime ์ฐจํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

helm upgrade $ENV_RELEASE_NAME apigee-runtime/ \
  --namespace APIGEE_NAMESPACE \
  --atomic \
  --set env=$ENV_NAME \
  -f overrides.yaml

์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ ์‚ฌ์šฉ ์„ค์ • ๋˜๋Š” ์‚ฌ์šฉ ์ค‘์ง€

์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. customAutoscaling.enabled ์†์„ฑ์„ true ๋˜๋Š” false๋กœ ์„ค์ •ํ•˜์—ฌ ์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. apigee-telemetry ์ฐจํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ customAutoscaling.enabled ์†์„ฑ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

helm upgrade telemetry apigee-telemetry/ \
  --namespace APIGEE_NAMESPACE \
  --atomic \
  -f overrides.yaml

๋”์šฑ ์ ๊ทน์ ์ธ ํ™•์žฅ ๊ตฌ์„ฑ

์ˆ˜์ง ํ™•์žฅ ์ •์ฑ…์˜ percent ๊ฐ’๊ณผ pods ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๋”์šฑ ์ ๊ทน์ ์ธ ์ˆ˜์ง ํ™•์žฅ ์ •์ฑ…์ด ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ scaleDown์—์„œ percent ๊ฐ’๊ณผ pods ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ์ ๊ทน์ ์ธ ์ถ•์†Œ ์ •์ฑ…์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

runtime:
  # ...
  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 ๊ตฌ์„ฑ ๊ฐ’์„ ์ค„์—ฌ ๋œ ์ ๊ทน์ ์ธ ์ˆ˜์ง ํ™•์žฅ ์ •์ฑ…๊ณผ ์ถ•์†Œ ์ •์ฑ…์„ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

runtime:
  # ...
  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 ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ™•์žฅ ์ •์ฑ…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ด ์„น์…˜์—์„œ๋Š” ํ™•์žฅ๊ณผ ์ž๋™ ํ™•์žฅ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

HPA์—์„œ๋Š” ์ธก์ •ํ•ญ๋ชฉ ๊ฐ’์— unknown ํ‘œ์‹œ

์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  HPA์—์„œ ์ธก์ •ํ•ญ๋ชฉ ๊ฐ’์— unknown์„ ํ‘œ์‹œํ•˜๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HPA ์ถœ๋ ฅ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl describe hpa HPA_NAME

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ HPA_NAME์„ ๋ณด๋ ค๋Š” HPA์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์ถœ๋ ฅ์—๋Š” CPU ๋ชฉํ‘œ์™€ ์„œ๋น„์Šค ์‚ฌ์šฉ๋ฅ ์ด ํ‘œ์‹œ๋˜์–ด ์ธก์ •ํ•ญ๋ชฉ ๊ธฐ๋ฐ˜ ํ™•์žฅ์ด ์—†์„ ๋•Œ CPU ํ™•์žฅ์ด ์ž‘๋™ํ•  ๊ฒƒ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” HPA ๋™์ž‘์€ ์—ฌ๋Ÿฌ ์ธก์ •ํ•ญ๋ชฉ์œผ๋กœ ํ™•์žฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.