개발
쿠버네티스(Kubernetes, k8s)
탁재민
2024. 6. 13. 02:32
오픈 소스 컨테이너 오케스트레이션 플랫폼
컨테이너화된 애플리케이션의 배포, 확장 및 운영을 자동화
주요 개념

- 클러스터(Cluster):
- 컨테이너화된 애플리케이션을 실행하는 노드의 집합
- 컨트롤 플레인 및 하나 이상의 노드를 포함
- 노드(Node):
- 클러스터 내의 단일 머신(가상 또는 물리적)
- 마스터 노드는 클러스터를 관리하고 작업자 노드는 애플리케이션을 실행
- 파드(Pod):
- 쿠버네티스에서 배포 가능한 가장 작은 단위로, 하나 이상의 컨테이너 그룹
- 같은 네트워크 네임스페이스를 공유, 동일한 호스트에서 실행됩니다.
- 포드는 노드에서 실행하도록 예약되고 오케스트레이션됨
- 컨트롤러 플레인(Controller Plane):
- 클러스터에 관한 전반적인 결정(스케줄링, 이벤트)을 수행
- kubelet
- 컨트롤러 플레인과 통신하는 매우 작은 애플리케이션
- 클러스터의 각 노드에서 실행
역할 및 장점
- 애플리케이션 배포:
- 애플리케이션을 컨테이너화하고 쿠버네티스 매니페스트 파일에 애플리케이션의 원하는 상태를 정의
- 파드, 서비스, 볼륨 등의 리소스 포함
- 선언적 관리:
- 사용자는 클러스터의 원하는 상태를 선언적으로 정의
- 쿠버네티스는 현재 상태를 원하는 상태로 유지하기 위해 지속적으로 작업을 수행
- 롤아웃 및 롤백:
- 애플리케이션 업데이트 시 새로운 버전을 순차적으로 배포하여 장애를 최소화
- 문제가 발생할 경우 롤백 기능을 통해 이전 버전으로 되돌림
- 자동 스케일링:
- 애플리케이션의 부하에 따라 자동으로 서버를 늘리거나 줄임
- 트래픽 증가 대처에 용이
- 자체 치유(Self-Healing):
- 장애가 발생한 파드를 자동으로 감지
- 재시작하거나 교체하여 서비스 중단을 최소화
- 고가용성:
- 애플리케이션을 여러 서버에 배포하여 하나의 서버에 장애가 발생해도 시스템이 계속 동작