티스토리 뷰

쿠버네티스

CKA 기출문제 정리 HPA

jws199 2025. 1. 1. 20:56

1. 문제#1

1) 문제 시나리오: 

- 클러스터에서 Deployment의 CPU 사용량을 기준으로 레플리카 수를 자동으로 조정하는 HPA를 구성해야함 

(1) Deployment 생성

- stress-ng 이미지를 사용하여 Deploment 생성

- 이름: hpa-deployment

- 2개의 레플리카 

(2) HPA

- CPU 사용량이 평균적으로 50%이상일때 레플리카 수를 자동으로 확장하도록 HPA를 구성

- 최소 레플리카 수:2, 최대 레플리카 수 5로 설정

(3) CPU 부하 생성:

- 기존 Pod 내부에서 부하테스트 도구(stress-ng)를 실행하여 CPU 부하를 생성 

2) 해결과정 

(1) YAML 작성 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hpa-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hpa-app
  template:
    metadata:
      labels:
        app: hpa-app
    spec:
      containers:
      - name: stress-ng 
        image: ghcr.io/arm-research/stress-ng #stress-ng 이미지사용 
        resources:
        args: [] # 초기에는 부하가 없으므로 비워둔다. 
          requests:
            cpu: "100m" # 최소 CPU 요청
          limits:
            cpu: "200m" # 최대 CPU 제한

(2) Deployment 생성 

kubectl apply -f hpa-deployment.yaml

(3) HPA YAML 작성

#hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
 name: hpa-deployment
spec:
 scaleTargetRef:
  apiVersion: apps/v1
  kind: Deployment
  name: hpa-deployment # 대상 deployment 이름 
minReplicas: 2 #최소 레플리카 수 
maxReplicas: 5 #최대 레플리카 수 
metrics:
- type: Resource # 리소스 기반 메트릭 설정 (CPU)
  resource:
   name: cpu
   target:
    type: Utilization # CPU 사용량 기준으로 스케일링 
    averageUtilization: 50 # 평균 CPU 사용량 목표(50%)

(4) HPA 생성 

kubectl apply -f hpa.yaml

(5) CPU 부하 테스트 

- 실행중인 Pod 목록 확인 

kubectl get pods --selector=app=hpa-app

NAME                             READY   STATUS    RESTARTS   AGE
hpa-deployment-5b6d8c9d4f-abcde   1/1     Running   0          30s
hpa-deployment-5b6d8c9d4f-fghij   1/1     Running   0          30s

- stress-ng 도구를 사용하여 CPU 부하를 생성하기 위해 Pod에 접속 

kubectl exec -it hpa-deployment-5b6d8c9d4f-abcde -- sh

- Pod 내부에서 CPU 부하를 생성 (두개의 CPU 코어에 부하를 생성하고 부하를 300초 동안 유지)

stress-ng --cpu 2 --timeout 300s

(6) 결과 확인 

- HPA 상태 확인 

kubectl get hpa hpa-deployment --watch

NAME              REFERENCE                TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
hpa-deployment    Deployment/hpa-deployment    60% (avg)       2         5         3         30s

- 처음 레플리카가 2개였으나 현재 3개로 증가했음을 알 수 있다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함