IT Study/시스템 인프라 및 네트워크

💡 쿠버네티스(Kubernetes)

cs_bot 2025. 3. 26. 00:29

1. 개요

  • 구글에서 개발하고 CNCF(Cloud Native Computing Foundation)로 이관된 오픈소스 기반 컨테이너 오케스트레이션 플랫폼
  • 다수의 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 로드 밸런싱, 복구, 관리 수행
  • 클라우드 네이티브 아키텍처의 핵심 구성요소로 활용되며, DevOps 및 CI/CD 파이프라인에 밀접하게 연계

2. 등장 배경

  • 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 전환됨에 따라, 컨테이너 기술의 수요 증가
  • Docker 등 컨테이너 기술의 발전에도 불구하고, 다수 컨테이너의 통합 관리 및 운영의 복잡성 증가
  • 컨테이너의 상태 모니터링, 자원 스케줄링, 장애 복구, 롤링 업데이트 등 자동화된 관리 필요성 대두
  • 이러한 문제 해결을 위한 오케스트레이션 툴로서 쿠버네티스 등장

3. 주요 구성 요소

■ 마스터 컴포넌트

  • API Server
    → 클러스터와 상호작용하는 진입점으로, RESTful API를 통해 명령 수신 및 클러스터 상태 관리
  • Scheduler
    → 컨테이너의 실행 위치 결정. 노드의 자원 상태, 정책 등을 고려하여 최적 노드 선택
  • Controller Manager
    → 노드, 레플리카, 엔드포인트 등 다양한 리소스의 상태를 지속적으로 모니터링하고 지정된 상태 유지
  • etcd
    → 클러스터의 상태 및 설정 정보를 저장하는 분산형 키-값 저장소. 고가용성과 일관성 보장

■ 워커 컴포넌트

  • kubelet
    → 각 노드에서 실행되며, 컨테이너 상태 모니터링 및 명령 수행
  • kube-proxy
    → 네트워크 프록시 및 로드 밸런서 역할 수행. 클러스터 내부 서비스 간 통신 지원
  • Container Runtime
    → 실제 컨테이너 실행을 담당하는 런타임 (예: containerd, CRI-O 등)

4. 쿠버네티스의 핵심 리소스

리소스 설명
Pod 쿠버네티스에서 가장 작은 배포 단위. 하나 이상의 컨테이너를 포함하며, 공유 스토리지 및 IP 사용
ReplicaSet 지정된 수의 동일한 Pod를 유지 관리
Deployment 롤링 업데이트, 롤백 등 버전 관리를 포함한 Pod 관리 방식 제공
Service Pod 간 통신을 위한 네트워크 추상화 제공. ClusterIP, NodePort, LoadBalancer 등 유형 존재
ConfigMap 환경설정 정보를 분리하여 관리할 수 있는 객체
Secret 암호, 토큰 등 민감 정보를 안전하게 저장
Namespace 자원 격리를 위한 가상 클러스터 개념
Volume 컨테이너 간 공유되는 저장 공간 추상화

5. 주요 기능

  • 자동화된 배포 및 롤아웃
    → 버전 관리와 함께 애플리케이션 배포, 롤링 업데이트 수행
  • 자가 치유(Self-healing)
    → 장애 발생 시 자동으로 Pod 재시작, 교체 또는 재배치
  • 서비스 디스커버리 및 로드 밸런싱
    → 클러스터 내 Pod 간 통신을 위해 서비스 자동 탐색 및 요청 분산
  • 수평적 오토스케일링
    → 메트릭(CPU 사용률 등)에 따라 Pod 개수 자동 조정
  • 구성 관리 및 보안 강화
    → ConfigMap 및 Secret을 통한 민감 정보 관리와 접근 통제

6. 장점

  • 애플리케이션의 고가용성과 무중단 배포 보장
  • 인프라와 무관하게 동작 가능 (온프레미스, 클라우드, 하이브리드 환경)
  • 수천 개의 노드와 수만 개의 컨테이너까지 확장 가능
  • 멀티 테넌시 환경에서 자원 분리 및 정책 기반 접근 가능
  • 강력한 커뮤니티 기반으로 지속적인 기능 개선과 생태계 확장

7. 쿠버네티스 생태계

  • Helm : 패키지 매니저 역할, 복잡한 애플리케이션을 템플릿화
  • Prometheus + Grafana : 모니터링 및 시각화 도구와의 통합
  • Istio : 서비스 메시 구현을 위한 인그레스, 보안, 트래픽 제어 기능
  • ArgoCD : GitOps 방식의 쿠버네티스 배포 자동화 도구
  • Knative : 서버리스 컴퓨팅 환경 구축 도구

8. 관련 기술과의 연계

  • DevOps
    → CI/CD 파이프라인과 통합하여 지속적 배포 가능
  • 클라우드 서비스
    → AWS EKS, Google GKE, Azure AKS 등 쿠버네티스를 서비스로 제공하는 형태 확산
  • 컨테이너 기술(Docker)
    → 쿠버네티스는 컨테이너 런타임에 독립적이나, Docker와의 연계가 가장 일반적

9. 쿠버네티스 활용 시 고려사항

  • 초기 학습 곡선이 높고 운영 복잡성 존재
  • 리소스 오버헤드 발생 가능성, 경량화 필요
  • 네트워크 보안 및 정책 설정 등 고도화된 운영 정책 필요
  • 롤아웃/롤백 전략, 상태 점검, 헬스체크 등 명확한 정책 수립 필요

10. 결론

  • 쿠버네티스는 현대 소프트웨어 개발과 운영을 혁신적으로 변화시킨 핵심 기술 중 하나로 평가
  • 클라우드 네이티브 환경을 위한 표준 오케스트레이션 플랫폼으로 자리매김
  • 운영 자동화, 확장성, 고가용성을 보장하며, DevOps와 마이크로서비스 아키텍처 실현의 필수 기반 기술로 활용 중