Kubernetes/Kubernetes Basics

📌 Kubernetes의 필요성: 컨테이너 운영 자동화가 왜 필요할까?

ygtoken 2025. 3. 2. 20:33
728x90

 

1️⃣ 컨테이너의 발전과 새로운 문제들

 

Docker와 같은 컨테이너 기술 덕분에 애플리케이션을 쉽고 빠르게 배포할 수 있게 되었습니다.

하지만, 컨테이너를 대량으로 운영하다 보면 수동 관리로는 해결할 수 없는 문제들이 발생하게 됩니다.

 

👉 예제 시나리오:

📦 “내 애플리케이션을 Docker 컨테이너로 배포했어요!”

✅ 실행이 잘 됩니다.

❌ 하지만… 몇 가지 문제점이 발생합니다.

 

문제 1: 컨테이너 장애 발생 시 자동 복구가 필요함

특정 컨테이너가 예상치 못하게 종료된다면?

개발자가 직접 다시 실행해야 할까요?

 

문제 2: 서비스 트래픽 증가에 따른 자동 확장이 필요함

쇼핑몰의 트래픽이 갑자기 폭증하면?

미리 컨테이너를 많이 실행해 두어야 할까요?

 

문제 3: 컨테이너 간 네트워크 및 로드 밸런싱이 필요함

수많은 컨테이너가 실행되고 있을 때,

클라이언트 요청을 적절한 컨테이너로 전달하려면?

 

문제 4: 애플리케이션 업데이트 및 롤백이 필요함

새로운 기능이 추가된 버전을 배포했는데,

버그가 있어서 이전 버전으로 롤백하려면?

 

👉 이러한 문제들을 자동으로 해결할 수 있는 시스템이 필요합니다.

그것이 바로 Kubernetes입니다! 🚀

 


 

2️⃣ Kubernetes가 해결하는 핵심 문제들

 

💡 1. 컨테이너 장애 자동 복구 (Self-Healing)

 

Kubernetes는 컨테이너가 비정상적으로 종료되면 자동으로 새로운 컨테이너를 실행합니다.

 

📌 실제 예제:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-container
    image: nginx
    restartPolicy: Always  # 컨테이너가 종료되면 자동으로 재시작!

Kubernetes는 컨테이너가 종료되더라도 자동으로 다시 실행합니다.

 

💡 2. 트래픽 증가에 따른 자동 확장 (Auto-Scaling)

 

Kubernetes는 서비스의 트래픽이 늘어나면 컨테이너 수를 자동으로 조정할 수 있습니다.

 

📌 실제 예제:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50  # CPU 사용량이 50%를 넘으면 자동으로 확장

CPU 사용량이 증가하면 자동으로 컨테이너 수를 늘려 트래픽을 분산할 수 있습니다.

 

💡 3. 컨테이너 간 네트워크 및 로드 밸런싱

 

Kubernetes는 여러 개의 컨테이너가 있을 때 트래픽을 자동으로 분산합니다.

 

📌 실제 예제:

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: LoadBalancer

클라이언트 요청이 여러 컨테이너(Pod)로 분산되어 처리됩니다.

 

💡 4. 애플리케이션 업데이트 및 롤백

 

Kubernetes는 새로운 버전을 배포하고, 문제가 발생하면 롤백할 수 있습니다.

 

📌 실제 예제:

kubectl set image deployment/my-app my-container=my-app:v2
kubectl rollout undo deployment my-app  # 롤백 명령어

버그가 있는 버전을 배포해도 쉽게 원래 상태로 복구할 수 있습니다.

 


 

3️⃣ Kubernetes가 제공하는 핵심 기능 요약

기능설명Kubernetes 역할

자동 복구 (Self-Healing) 컨테이너가 다운되면 자동으로 재시작 restartPolicy 설정
자동 확장 (Auto-Scaling) 트래픽 증가 시 컨테이너 개수를 자동 조정 HorizontalPodAutoscaler
로드 밸런싱 여러 컨테이너에 트래픽을 분산 Service 오브젝트
배포 및 롤백 새로운 버전 배포 및 문제 발생 시 롤백 kubectl rollout undo

📌 결론: Kubernetes가 필요한 이유

 

단순한 Docker 컨테이너만으로는 효율적인 운영이 어렵습니다.

Kubernetes는 컨테이너 운영 자동화를 통해 안정성, 확장성, 유연성을 보장합니다.

 

Kubernetes를 사용하면?

컨테이너 장애가 발생해도 자동 복구 🔄

트래픽이 많아지면 자동으로 확장 📈

네트워크 및 로드 밸런싱 자동 관리 🌐

애플리케이션 배포와 롤백이 쉬움 🔄

 

🔥 그래서 Kubernetes는 현대 애플리케이션 운영의 필수 요소입니다!

 

728x90