쿠버네티스(Kubernetes)

쿠버네티스(Kubernetes, K8s)는 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장할 수 있도록 도와주는 컨테이너 오케스트레이션 플랫폼입니다.
구글이 내부적으로 사용하던 Borg 시스템을 기반으로 개발하였으며, 현재 CNCF(Cloud Native Computing Foundation)에서 관리하고 있습니다.

🛠 쿠버네티스의 주요 개념

쿠버네티스는 여러 개의 컨테이너를 효율적으로 관리할 수 있도록 클러스터 기반 구조를 가집니다.

1️⃣ 클러스터 (Cluster)

  • 쿠버네티스가 실행되는 기본 단위
  • 마스터 노드(Master Node)워커 노드(Worker Node)로 구성

2️⃣ 노드 (Node)

  • 컨테이너를 실행하는 물리적/가상 서버
  • 마스터 노드: 클러스터 관리 및 제어
  • 워커 노드: 실제 애플리케이션 컨테이너 실행

3️⃣ 파드 (Pod)

  • 쿠버네티스에서 컨테이너를 실행하는 최소 단위
  • 여러 개의 컨테이너를 하나의 Pod에서 실행 가능
  • 같은 네트워크를 공유하며, 기본적으로 같은 호스트에서 실행됨

4️⃣ 디플로이먼트 (Deployment)

  • 컨테이너 애플리케이션의 배포 및 관리를 자동화하는 객체
  • 롤링 업데이트(Rolling Update) 및 롤백(Rollback) 지원
  • 선언적 방식으로 YAML 또는 JSON 파일을 사용하여 배포 가능

5️⃣ 서비스 (Service)

  • Pod 간 또는 외부와의 네트워크 통신을 가능하게 하는 네트워크 객체
  • 클러스터 IP, 노드포트(NodePort), 로드 밸런서(LoadBalancer) 방식 지원

6️⃣ 인그레스 (Ingress)

  • 외부에서 쿠버네티스 클러스터 내부의 서비스로 접근할 수 있도록 설정하는 API 객체
  • 도메인 기반 트래픽 라우팅 및 SSL 적용 가능

7️⃣ 컨트롤러 (Controller)

  • 시스템 상태를 지속적으로 모니터링하며 원하는 상태를 유지하는 역할
  • ReplicaSet, StatefulSet, DaemonSet, Job, CronJob 등이 있음

🚀 쿠버네티스의 주요 기능 및 장점

✅ 자동화된 컨테이너 관리 → 애플리케이션 배포, 확장, 복구 자동화
✅ 무중단 업데이트 → 롤링 업데이트 & 롤백 지원
✅ 자동 확장(Auto Scaling) → 트래픽 변화에 따른 자동 확장 가능
✅ 로드 밸런싱 → 여러 개의 Pod에 부하 분산
✅ 자체 복구(Self-healing) → 장애 발생 시 자동으로 컨테이너 재시작
✅ 다양한 인프라 지원 → 온프레미스, 클라우드(AWS, GCP, Azure) 등에서 사용 가능

🏗 쿠버네티스 배포 예제

쿠버네티스를 활용하여 간단한 Nginx 웹 서버를 배포하는 방법을 설명하겠습니다.

1️⃣ Deployment 파일 작성

아래 YAML 파일을 사용하여 Nginx를 배포합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # 3개의 Pod 실행
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80

2️⃣ 배포 실행

kubectl apply -f nginx-deployment.yaml

3️⃣ 서비스(Service) 생성

Pod를 외부에서 접근할 수 있도록 서비스 객체를 생성합니다.

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort

배포 후 확인:

kubectl apply -f nginx-service.yaml
kubectl get pods
kubectl get services

이제 NodePort를 통해 웹 서버에 접근할 수 있습니다!

🎯 쿠버네티스 vs Docker

비교 항목DockerKubernetes
개념컨테이너 실행 및 관리컨테이너를 클러스터 단위로 자동화 관리
배포 방식개별 컨테이너 실행여러 컨테이너를 묶어 자동 배포
확장성수동 확장 필요자동 확장 가능
복구 기능컨테이너 다운 시 직접 재시작 필요자동 복구 (Self-healing)
부하 분산직접 설정 필요내장 로드 밸런싱 지원
네트워크 관리개별 컨테이너 연결클러스터 내 네트워크 관리

👉 Docker는 컨테이너를 실행하는 기술이고, Kubernetes는 이를 대규모로 관리하는 오케스트레이션 도구입니다.
즉, Docker는 컨테이너 실행, Kubernetes는 컨테이너 운영 자동화라고 이해하면 됩니다!

📌 쿠버네티스 활용 사례

🔹 마이크로서비스 아키텍처 (MSA) → 여러 개의 서비스 운영 자동화
🔹 CI/CD 파이프라인 → 지속적 배포 및 롤백 자동화
🔹 멀티 클라우드 환경 → AWS, GCP, Azure 등 다양한 클라우드에서 통합 운영
🔹 자동 확장 및 부하 분산 → 트래픽 증가 시 자동으로 Pod 추가

📌 정리

✅ 쿠버네티스(Kubernetes, K8s)는 컨테이너 기반 애플리케이션을 자동으로 배포, 관리, 확장할 수 있는 컨테이너 오케스트레이션 도구입니다.
✅ Docker는 컨테이너 실행 도구, Kubernetes는 컨테이너 관리 도구입니다.
✅ 마이크로서비스 아키텍처, CI/CD 자동화, 멀티 클라우드 환경에서 필수적인 도구로 사용됩니다.

🚀 쿠버네티스를 활용하면 대규모 컨테이너 환경을 효율적으로 관리할 수 있습니다!

Leave a Comment