728x90
개요
Kubernetes는 고가용성과 안정성을 제공하기 위해 다양한 Deployment 전략을 지원합니다. 그중에서도 replicas, Rolling Update, Rollback은 애플리케이션의 확장성과 안정적인 업데이트를 구현하는 데 필수적인 요소입니다. 이 글에서는 각 기능의 개념과 실제 테스트 과정을 공유하며, Kubernetes Deployment가 애플리케이션을 효율적으로 운영하는 방법을 알아보겠습니다.
replicas란?
Kubernetes에서 replicas는 Deployment 리소스의 핵심 구성 요소 중 하나입니다. 이는 동일한 애플리케이션 인스턴스를 여러 개 실행하여 고가용성 및 부하 분산을 보장하기 위해 사용됩니다
replicas는 Deployment의 스펙(spec) 내에서 정의되며, 실행하려는 Pod의 개수를 지정합니다. Kubernetes는 지정된 replicas 수만큼 Pod를 생성, 유지하고, Pod가 삭제되거나 비정상 상태일 경우 새로 생성하여 상태를 항상 원하는 대로 유지합니다.
기본 Yaml 설정 예제
- replicas를 3으로 설정하면, 3개의 Pod가 실행됩니다. 이 숫자를 변경하면, Kubernetes는 자동으로 Pod를 추가하거나 삭제하여 설정된 개수를 유지합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 3 # 실행할 Pod의 개수
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example-container
image: nginx:1.14 # NGINX 이미지 사용
replicas 설정 변경 Test
1) Deploy 생성
- 아래와 같은 Deployment YAML 파일을 작성하여 Nginx를 사용하는 Deployment를 생성했습니다.
# vi deployt-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
spec:
replicas: 2 # 초기 Pod 개수
selector:
matchLabels:
app: webui
template:
metadata:
labels:
app: webui
spec:
containers:
- name: nginx-container
image: nginx:1.14
- deployment 생성한 후 pod 상태 확인
# kubectl apply -f deploy-nginx.yaml
# k get po
NAME READY STATUS RESTARTS AGE
deploy-nginx-554856776f-frbh4 1/1 Running 0 19s
deploy-nginx-554856776f-v7sgs 1/1 Running 0 19s
2) Pod 삭제 및 복구 테스트
- replicas 설정에 따라, Pod가 삭제되더라도 Kubernetes는 이를 자동으로 복구합니다.
# kubectl delete pod deploy-nginx-554856776f-v7sgs
# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-554856776f-frbh4 1/1 Running 0 89s
deploy-nginx-554856776f-d4k4w 1/1 Running 0 4s
3) replicas 값을 동적으로 변경하기
- kubectl scale 명령어를 사용하면, YAML 파일을 수정하지 않고도 replicas 값을 즉시 변경할 수 있습니다. 다음은 replicas를 3으로 변경한 후 동작을 확인한 과정입니다.
# kubectl scale deployment deploy-nginx --replicas=3
# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-554856776f-frbh4 1/1 Running 0 2m
deploy-nginx-554856776f-d4k4w 1/1 Running 0 1m
deploy-nginx-554856776f-ckd84 1/1 Running 0 10s
4) replicas 감소 테스트
# kubectl scale deployment deploy-nginx --replicas=1
# kubectl get pods
NAME READY STATUS RESTARTS AGE
deploy-nginx-554856776f-frbh4 1/1 Running 0 3m
replicas 활용 팁
- 스케일링
- 트래픽 변화에 따라 replicas를 동적으로 조정하여 고가용성을 유지하고 자원을 효율적으로 활용할 수 있습니다.
# kubectl scale deployment deploy-nginx --replicas=5
- 자동화
- kubernetes의 HPA(Horizontal Pod Autoscaler)를 사용하면, CPU/메모리 사용량에 따라 자동으로 replicas를 조정할 수 있습니다.
- 헬스 체크
- 적절한 Liveness 및 Readiness Probe 설정을 통해, 비정상적인 Pod를 자동으로 복구하는 메커니즘을 활용하세요
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] Rolling Update : 점진적 업데이트, 버전 관리 (0) | 2025.02.06 |
---|---|
[Kubernetes] Kubernetes Pod 및 Docker Container 최소 권한 관리 (0) | 2025.02.05 |
[Kubernetes] 로드밸런싱을 위해 Control-plane 증설 이후 작업 (0) | 2025.02.03 |
[Kubernetes] CoreDNS & 쿠버네티스 버전의 관계 (0) | 2025.01.28 |
[kubernetes] 쿠버 클러스터 호스트 네임 변경으로 인해 자식 노드 재가입 (0) | 2025.01.12 |