개발

쿠버네티스(Kubernetes, k8s)

탁재민 2024. 6. 13. 02:32
 오픈 소스 컨테이너 오케스트레이션 플랫폼
컨테이너화된 애플리케이션의 배포, 확장 및 운영을 자동화

주요 개념

  • 클러스터(Cluster):
    • 컨테이너화된 애플리케이션을 실행하는 노드의 집합
    • 컨트롤 플레인 및 하나 이상의 노드를 포함
  • 노드(Node):
    • 클러스터 내의 단일 머신(가상 또는 물리적)
    • 마스터 노드는 클러스터를 관리하고 작업자 노드는 애플리케이션을 실행
  • 파드(Pod):
    • 쿠버네티스에서 배포 가능한 가장 작은 단위로, 하나 이상의 컨테이너 그룹
    • 같은 네트워크 네임스페이스를 공유, 동일한 호스트에서 실행됩니다.
    • 포드는 노드에서 실행하도록 예약되고 오케스트레이션됨
  • 컨트롤러 플레인(Controller Plane):
    • 클러스터에 관한 전반적인 결정(스케줄링, 이벤트)을 수행
  • kubelet
    • 컨트롤러 플레인과 통신하는 매우 작은 애플리케이션
    • 클러스터의 각 노드에서 실행

 

역할 및 장점

  • 애플리케이션 배포:
    • 애플리케이션을 컨테이너화하고 쿠버네티스 매니페스트 파일에 애플리케이션의 원하는 상태를 정의
    • 파드, 서비스, 볼륨 등의 리소스 포함
  • 선언적 관리:
    • 사용자는 클러스터의 원하는 상태를 선언적으로 정의
    • 쿠버네티스는 현재 상태를 원하는 상태로 유지하기 위해 지속적으로 작업을 수행
  • 롤아웃 및 롤백:
    • 애플리케이션 업데이트 시 새로운 버전을 순차적으로 배포하여 장애를 최소화
    • 문제가 발생할 경우 롤백 기능을 통해 이전 버전으로 되돌림
  • 자동 스케일링:
    • 애플리케이션의 부하에 따라 자동으로 서버를 늘리거나 줄임
    • 트래픽 증가 대처에 용이
  • 자체 치유(Self-Healing):
    • 장애가 발생한 파드를 자동으로 감지
    • 재시작하거나 교체하여 서비스 중단을 최소화
  • 고가용성:
    • 애플리케이션을 여러 서버에 배포하여 하나의 서버에 장애가 발생해도 시스템이 계속 동작