개발공부/CS

쿠버네티스란?

카슈밀 2025. 2. 16. 00:44
반응형

쿠버네티스(Kubernetes)

  • 컨테이너 오케스트레이션 플랫폼
  • 도커 컨테이너를 자동으로 배포, 확장, 관리
  • 부하 분산, 자동 복구, 무중단 배포 지원


**개념**
쿠버네티스는 컨테이너화된 애플리케이션의 자동 배포, 스케일링, 관리를 위한 오픈소스 플랫폼입니다.

**주요 컴포넌트**

1. 마스터 노드 컴포넌트
- API Server: 모든 통신의 중심점
- etcd: 클러스터의 상태 정보 저장소
- Scheduler: 새로운 워크로드 배치 담당
- Controller Manager: 클러스터 상태 관리

2. 워커 노드 컴포넌트
- kubelet: 노드에서 컨테이너 실행 관리
- kube-proxy: 네트워크 규칙과 포워딩 관리
- Container Runtime: 컨테이너 실행 환경

**핵심 개념**

1. Pod
```yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-app
    image: my-app:1.0
    ports:
    - containerPort: 8080
```
- 가장 작은 배포 단위
- 하나 이상의 컨테이너 포함
- 같은 Pod 내 컨테이너는 네트워크와 스토리지 공유

2. Service
- Pod에 대한 안정적인 접근점 제공
- 로드밸런싱 기능
- 유형: ClusterIP, NodePort, LoadBalancer

3. Deployment
- Pod의 선언적 업데이트 관리
- 롤링 업데이트, 롤백 기능
- 원하는 상태 유지

4. ConfigMap & Secret
- 설정 정보와 민감한 정보 관리
- 애플리케이션과 설정 분리

**주요 기능**

1. 자동 스케일링
- Horizontal Pod Autoscaling
- 부하에 따른 자동 확장/축소

2. 자동 복구
- 노드 장애 시 자동 복구
- Pod 장애 시 자동 재시작

3. 서비스 디스커버리
- 내부 DNS 서비스
- 자동 로드밸런싱

4. 롤링 업데이트
- 무중단 배포 가능
- 버전 관리와 롤백

**장점**
- 높은 확장성과 가용성
- 자동화된 운영 관리
- 선언적 구성
- 풍부한 생태계

**단점**
- 높은 학습 곡선
- 복잡한 아키텍처
- 소규모 애플리케이션에는 과도할 수 있음
- 운영 비용 발생

**사용 사례**
- 마이크로서비스 아키텍처
- 대규모 웹 애플리케이션
- CI/CD 파이프라인
- 클라우드 네이티브 애플리케이션

쿠버네티스는 현대 클라우드 네이티브 환경에서 필수적인 도구가 되었으며, 특히 대규모 분산 시스템 운영에 매우 효과적입니다.

728x90