📌 TL;DR:
Kubernetes(쿠버네티스)는 여러 개의 컨테이너를 효율적으로 관리하고 자동으로 배포할 수 있도록 도와주는 도구예요!
이 글에서는 Kubernetes의 기본 개념부터 실제로 애플리케이션을 배포하는 방법까지 차근차근 설명할게요. 😊
1. Kubernetes란?
Kubernetes(쿠버네티스)는 컨테이너를 관리하는 자동화 시스템이에요.
개발자가 애플리케이션을 만들고 배포할 때, 한두 개의 컨테이너는 Docker만으로 관리할 수 있지만,
컨테이너가 많아지면 자동화된 관리가 필요해요.
Kubernetes는 이를 해결해주는 컨테이너 오케스트레이션 툴이에요! 🚀
✅ Kubernetes의 주요 기능
- 자동 배포 및 스케일링 (트래픽이 많아지면 컨테이너 개수를 자동으로 조절!)
- 자동 복구 (컨테이너가 다운되면 자동으로 다시 실행!)
- 로드 밸런싱 (여러 컨테이너로 트래픽을 균등하게 분배!)
- 롤링 업데이트 & 롤백 (서비스를 중단하지 않고 새로운 버전 배포 가능!)
📦 즉, Kubernetes를 사용하면 개발자는 코드 작성에만 집중하고, 배포와 유지보수는 자동으로 처리할 수 있어요!
2. Kubernetes 기본 개념
📌 Kubernetes의 핵심 요소
개념 | 설명 |
Pod | 컨테이너가 실행되는 기본 단위 (여러 컨테이너 포함 가능) |
Node | 컨테이너를 실행하는 서버 (물리적/가상 머신) |
Cluster | 여러 개의 Node를 묶어 하나의 시스템처럼 운영하는 구조 |
Deployment | 컨테이너를 배포하고 업데이트하는 관리 단위 |
Service | 네트워크를 통해 Pod와 통신할 수 있도록 하는 역할 |
🛠 쉽게 설명하면?
- Pod는 컨테이너를 담는 상자
- Node는 Pod를 실행하는 컴퓨터
- Deployment는 Pod를 자동으로 관리하는 도구
- Service는 Pod에 접속할 수 있는 창구
3. Kubernetes 설치하기
✅ 로컬 환경에서 Kubernetes를 실행하려면 Minikube를 사용할 수 있어요!
1️⃣ Minikube 설치 (Linux/macOS)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
2️⃣ Minikube 실행
minikube start
✅ Kubernetes 클러스터가 정상적으로 실행되는지 확인하려면?
kubectl get nodes
4. Kubernetes에서 컨테이너 배포하기
이제 Kubernetes에서 간단한 웹 애플리케이션을 배포해볼게요! 🚀
1️⃣ Deployment 파일 작성 (nginx-deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3 # Nginx 컨테이너 3개 실행
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
📌 설명:
- replicas: 3 → 동일한 Nginx 컨테이너 3개 실행
- image: nginx:latest → 최신 Nginx 이미지 사용
- containerPort: 80 → 컨테이너 내부에서 80 포트 사용
2️⃣ Deployment 생성하기
kubectl apply -f nginx-deployment.yaml
✅ kubectl apply -f → YAML 설정을 Kubernetes에 적용
3️⃣ 실행된 Pod 확인
kubectl get pods
✅ kubectl get pods → 실행 중인 컨테이너(Pod) 목록 확인
5. Kubernetes에서 서비스(Service) 만들기
Pod는 내부적으로 실행되지만, 외부에서 접속하려면 Service를 만들어야 해요.
1️⃣ Service 파일 작성 (nginx-service.yaml)
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
📌 설명:
- selector: app: nginx → nginx Pod와 연결
- port: 80 → 외부에서 접속할 포트
- targetPort: 80 → 내부 컨테이너가 사용하는 포트
- type: LoadBalancer → 외부 IP를 할당해 외부에서 접근 가능하도록 설정
2️⃣ Service 적용하기
kubectl apply -f nginx-service.yaml
3️⃣ 실행된 Service 확인
kubectl get services
✅ kubectl get services → 서비스가 정상적으로 실행 중인지 확인
6. Kubernetes에서 애플리케이션 업데이트하기
Kubernetes에서는 서비스를 중단하지 않고 새로운 버전으로 업데이트할 수 있어요!
1️⃣ 새로운 버전의 Deployment 적용 (nginx:1.21.6으로 변경)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21.6 # 새로운 버전
ports:
- containerPort: 80
2️⃣ 업데이트 적용하기
kubectl apply -f nginx-deployment.yaml
3️⃣ 업데이트 상태 확인하기
kubectl rollout status deployment/nginx-deployment
✅ kubectl rollout status → 업데이트 진행 상태 확인
🚀 마무리
이제 Kubernetes에서 컨테이너를 배포하고 관리하는 방법을 익혔어요! 🎉
✅ Minikube를 사용해 Kubernetes 클러스터 실행
✅ Deployment를 이용해 컨테이너 배포
✅ Service를 통해 외부에서 접근 가능하게 만들기
✅ 롤링 업데이트로 서비스 중단 없이 새로운 버전 배포
💡 다음 목표? Kubernetes + CI/CD를 활용한 자동 배포 시스템 구축해보기! 🚀
'knowledge🧠 > Cloud ☁️' 카테고리의 다른 글
Kubernetes + CI/CD를 활용한 자동 배포 시스템 구축해보기! 🚀 (0) | 2025.03.08 |
---|---|
Kubernetes와 CI/CD 배워보기! 🚀 (0) | 2025.03.08 |
Docker로 개발 환경 쉽게 구축하기 (2편) 🚀 (1) | 2025.03.08 |
Docker로 개발 환경 쉽게 구축하기 (1편) 🐳 (0) | 2025.03.08 |
초보자를 위한 네트워크 보안 용어 쉽게 풀기! 🌐🔒 (2) | 2025.02.28 |