**쿠버네티스(Kubernetes)**는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. Google이 처음 개발했으며, 현재는 **Cloud Native Computing Foundation(CNCF)**에서 관리하고 있습니다.
쿠버네티스는 마이크로서비스, 클라우드 네이티브 아키텍처, DevOps 등 현대적인 소프트웨어 개발 방식에서 핵심적인 역할을 합니다.
쿠버네티스의 주요 특징
- 컨테이너 오케스트레이션
- 컨테이너화된 애플리케이션을 클러스터에서 효율적으로 관리.
- 애플리케이션 컨테이너의 배포, 네트워킹, 스케일링, 유지보수를 자동화.
- 확장성
- 수평 스케일링(컨테이너 복제) 및 수직 스케일링(리소스 증가)을 통해 애플리케이션을 동적으로 확장 가능.
- 셀프힐링(Self-healing)
- 실패한 컨테이너를 자동으로 재시작하거나, 문제가 있는 컨테이너를 교체.
- 비정상적인 노드에서 실행 중인 컨테이너를 자동으로 종료하고, 대체 가능한 노드로 이동.
- 자동화
- 배포(Deployment): 롤링 업데이트, 블루-그린 배포 등 다양한 전략을 제공.
- 로드 밸런싱: 트래픽 분산으로 안정적인 서비스 제공.
- 자동 스케일링: 리소스 사용량에 따라 컨테이너 수를 동적으로 조정.
- 플랫폼 독립성
- 온프레미스, 퍼블릭 클라우드, 하이브리드 환경에서 모두 사용 가능.
- AWS, Google Cloud, Azure 등 다양한 클라우드 플랫폼을 지원.
- 네트워킹
- 각 컨테이너 간의 통신, 서비스 디스커버리, 로드 밸런싱을 지원.
쿠버네티스의 주요 구성 요소
1. 클러스터
- 쿠버네티스는 클러스터 환경에서 작동하며, 클러스터는 여러 대의 머신(노드)으로 구성됨.
- 노드(Node): 작업이 실제로 수행되는 물리적/가상 서버.
2. 마스터 노드(Master Node)
- 클러스터를 제어하고 관리하는 중심 역할.
- 주요 컴포넌트:
- API 서버: 클라이언트 요청을 처리.
- 스케줄러: 작업을 수행할 노드를 결정.
- 컨트롤러 매니저: 클러스터 상태를 지속적으로 모니터링하고 원하는 상태로 유지.
- etcd: 분산 키-값 저장소로 클러스터 상태를 저장.
3. 워커 노드(Worker Node)
- 애플리케이션이 실제로 실행되는 노드.
- 주요 컴포넌트:
- Kubelet: 노드에서 실행 중인 컨테이너를 관리.
- Kube Proxy: 네트워크 통신을 관리.
- 컨테이너 런타임: 컨테이너를 실행하기 위한 도구(Docker, containerd 등).
4. 파드(Pod)
- 쿠버네티스의 최소 배포 단위.
- 하나 이상의 컨테이너가 실행되며, 동일한 네트워크와 스토리지를 공유.
5. 서비스(Service)
- 클러스터 내부 또는 외부에서 파드에 안정적으로 접근할 수 있는 방법을 제공.
- 로드 밸런싱 역할을 수행.
6. 네임스페이스(Namespace)
- 클러스터를 논리적으로 분리하여 다중 사용자가 독립적인 환경을 사용할 수 있게 함.
7. 배포(Deployment)
- 애플리케이션 배포, 업데이트, 스케일링, 롤백을 정의하고 관리.
쿠버네티스의 주요 장점
- 확장성과 효율성:
- 쿠버네티스는 큰 규모의 애플리케이션을 효율적으로 관리하며, 애플리케이션을 자동으로 확장 및 축소 가능.
- 클라우드 네이티브:
- 다양한 클라우드 환경과 호환되어 하이브리드 클라우드 전략에 적합.
- 자동화된 운영:
- 수동으로 관리할 필요 없이 애플리케이션을 자동으로 관리.
- 유연성:
- 다양한 컨테이너 런타임 및 클라우드 플랫폼을 지원.
- 오픈소스:
- 커뮤니티 지원 및 지속적인 발전.
'Cloud' 카테고리의 다른 글
Podman 으로 Zoomoney 프로젝트 배포하기 (0) | 2025.03.22 |
---|---|
Skopeo (0) | 2025.01.21 |
Dev-Ops (0) | 2025.01.20 |
Cloud-Front (0) | 2025.01.15 |
기본적인 DevOps 를 하기위한 리눅스명령어 (0) | 2024.11.26 |