[TIL] Kubernetes 확장성과 DevOps 학습 정리-2025.09.08

2025. 9. 11. 09:25대외활동/인공지능사관학교

728x90
반응형
SMALL

목표

  • 쿠버네티스에서 확장성(Scalability) 을 어떻게 구현하는지 이해한다.
  • Helm, Prometheus, Grafana, HPA(Horizontal Pod Autoscaler)와 같은 핵심 도구를 실제 적용 사례와 함께 학습한다.
  • Ansible을 통한 자동화, Helm을 통한 배포, Prometheus/Grafana를 통한 모니터링, HPA를 통한 오토스케일링 등 엔드투엔드 DevOps 파이프라인 흐름을 익힌다.

 

1. 쿠버네티스에서의 확장성 개념

  • 수평 확장(Scale-Out): Pod 복제(replica)를 늘려 트래픽을 분산 처리. → HPA가 자동화.
  • 수직 확장(Scale-Up): Pod 자체의 CPU/Memory 리소스를 증설. → Limits/Requests 조정.
  • 노드 확장: 클러스터에 새로운 노드를 추가하거나 줄임으로써 전체 리소스 용량 확장.

➡️ 핵심: 워크로드에 맞춰 Pod 수와 리소스를 자동 조정하는 것이 쿠버네티스의 강점

2. Helm을 통한 애플리케이션 배포

    • Helm = 쿠버네티스의 패키지 매니저. 복잡한 YAML을 차트(Chart) 단위로 관리
  • 구조: Chart.yaml, values.yaml, templates/.
  • 장점:
    • 수많은 리소스를 묶어 간단히 배포
    • 환경별 values 파일로 재사용성 확보
    • helm upgrade, helm rollback으로 릴리즈 관리 가능

➡️ Helm 차트를 활용하면 Nginx, MySQL, Prometheus Stack 등을 손쉽게 설치/업그레이드 가능

3. Prometheus & Grafana로 모니터링

Prometheus

  • Pull 기반 메트릭 수집(/metrics 엔드포인트)
  • 시계열 데이터 저장 및 PromQL 쿼리 제공
  • Service Discovery → Pod IP 변경에도 자동 추적
  • Alertmanager → CPU 80% 이상 같은 조건 충족 시 알림 발송

Grafana

  • Prometheus 데이터 시각화 대시보드
  • CPU/메모리 사용률, API 요청 지연, 에러율 확인

➡️ kube-prometheus-stack Helm 차트를 설치하면 Prometheus + Grafana + Alertmanager + Exporter들이 한 번에 구성됨

 

4. Horizontal Pod Autoscaler (HPA)

    • HPA는 Pod 리소스 사용량(CPU/메모리) 기준으로 자동 스케일링
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
    name: calculator-hpa
spec:
    scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: calculator-deployment
    minReplicas: 1
    maxReplicas: 10
    metrics:
    - type: Resource
      resource:
         name: cpu
         target:
            type: Utilization
            averageUtilization: 70
  • kubectl get hpa 로 현재 Target/Replicas 확인 가능.
  • Metrics Server 필요: CPU/메모리 데이터를 수집해서 HPA가 참고함.

➡️ 실습 효과: JMeter로 부하 → Grafana에서 CPU 상승 확인 → HPA가 Pod 개수 자동 확장

5. DevOps 파이프라인 구축 흐름

    1. FastAPI 애플리케이션 개발 및 계측 (/metrics 엔드포인트 노출)
    2. Dockerfile 작성 및 이미지 빌드/푸시 (예: DockerHub)
    3. Helm으로 쿠버네티스 배포 (Deployment, Service, Ingress)
    4. JMeter로 부하 테스트 (동시 접속 시 CPU 부하 발생)
    5. Prometheus/Grafana에서 모니터링 (Pod CPU/Memory 실시간 확인)
    6. HPA 적용 (자동 스케일링 확인)
    7. Alertmanager 연동 (Slack/Email로 알림 전송)
    8. 노드 관리 (kubectl cordon/drain/delete)

➡️ 이 과정을 통해 개발 → 배포 → 모니터링 → 자동 확장 → 알림 → 운영까지 완전한 DevOps 사이클 경험.

 

오늘의 배움 (Key Takeaways)

  1. Helm = 쿠버네티스 앱 배포의 필수 도구. values.yaml 기반 관리로 운영 효율 ↑.
  2. Prometheus+Grafana = 관측 가능성(Observability)의 핵심 스택. 시스템을 "보이는 상태"로 만들어 줌.
  3. HPA = 쿠버네티스 확장성의 상징. 부하에 따라 Pod를 자동으로 늘리고 줄임.
  4. Alertmanager 연계 = 운영 자동화. CPU 사용률 ↑ 시 슬랙/이메일 알림으로 즉시 대응 가능.
  5. DevOps 파이프라인을 통해 “개발–배포–운영–확장–알림”이 하나의 자동화된 흐름으로 이어짐을 확인.
728x90
반응형
LIST