HPA 대상 Deployment의 replicas 관리 점검

자동 확장과 배포 도구가 같은 복제본 수를 반복해서 덮어쓰지 않도록 관리하세요.

설명

HorizontalPodAutoscaler(HPA)는 관측한 지표에 따라 Deployment의 복제본 수를 조절합니다. 배포 도구가 고정된 spec.replicas를 반복 적용하면 HPA가 조정한 값을 덮어써 복제본 수가 불필요하게 오르내릴 수 있습니다. replicas가 선언되어 있다는 것만으로 HPA가 작동하지 않는 것은 아닙니다.

잠재적 영향

  • 매니페스트 재적용 시 복제본 수가 줄어 가용성에 영향을 줄 수 있습니다.
  • 서로 다른 관리 주체가 복제본 수를 바꾸어 확장과 변경 관리가 복잡해질 수 있습니다.

해결 방법

  • HPA가 복제본을 관리하는 Deployment에서는 배포 도구의 replicas 관리 방식을 확인하고 불필요한 고정 값의 재적용을 중단하세요. 기존 필드 소유권을 변경할 때 복제본 수가 예상치 않게 초기화되지 않도록 전환을 계획하세요.
  • HPA의 minReplicas, maxReplicas와 지표를 실제 용량 요구에 맞추세요. 지표 제공 기능과 필요한 리소스 요청을 준비하고 배포·부하 변화 중 복제본 수를 확인하세요.

예시

복제본 관리 설정만 비교하는 기존 발췌입니다. 실제 이미지와 지표 제공 기능은 별도 준비가 필요합니다. CPU 사용률 기반 HPA에는 CPU 요청이 필요하며, 이 예시에 생략된 컨테이너 리소스 요청도 실제 환경에 맞게 설정해야 합니다.

변경 전

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: example/web:v1
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web
  minReplicas: 1
  maxReplicas: 10

replicas: 1을 다시 적용하면 HPA가 늘린 복제본 수를 덮어쓸 수 있습니다. 이 값 자체가 HPA를 비활성화하지는 않습니다.

변경 후

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: example/web:v1
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web
  minReplicas: 1
  maxReplicas: 10

고정 replicas 선언을 생략합니다. 실제 배포 도구의 필드 관리와 HPA 지표가 올바르게 구성되어야 자동 확장이 유지됩니다.

참조