
인프런 워밍업 스터디 클럽 4기 데브옵스 - 미션4(PVC/PV, Deployment 등)
Application 기능으로 이해하기 - PVC/PV, Deployment, Service, HPA [미션4]
PVC / PV 실습
1-1. local 및 hostPath 설정 실습
Step 1~4. local
PV 동작 확인
create-file-pod
,create-file-pv
API 호출로 파일 생성Pod 내 경로 확인:
kubectl exec -n anotherclass-123 -it <pod> -- ls /usr/src/myapp/tmp kubectl exec -n anotherclass-123 -it <pod> -- ls /usr/src/myapp/files/dev
Master 노드에 실제 저장:
ls /root/k8s-local-volume/1231
Pod 삭제 후에도
/files/dev
경로의 데이터는 유지됨list-file-pod
,list-file-pv
API로 확인
Step 5. hostPath
로 수정 후 재확인
PVC 설정 제거
hostPath 설정:
volumes: - name: files hostPath: path: /root/k8s-local-volume/1231
다시 1~4단계 반복 → 동일하게 파일 유지 및 공유 확인
Deployment 실습
2-1. RollingUpdate
HPA minReplica를 2로 설정하거나 직접 scale:
kubectl patch -n anotherclass-123 hpa api-tester-1231-default -p '{"spec":{"minReplicas":2}}'
이미지 변경으로 롤링 업데이트 실행:
kubectl set image -n anotherclass-123 deployment/api-tester-1231 api-tester-1231=1pro/api-tester:v2.0.0
서비스 중단 없이 버전 순차 업데이트 확인
2-2. RollingUpdate 전략 수정
maxUnavailable: 0%
,maxSurge: 100%
설정으로 무중단 배포 보장
2-3. Recreate 전략 실습
전략 변경:
strategy: type: Recreate
업데이트 시 전체 Pod가 삭제되었다가 다시 생성됨 → 일시적 서비스 중단 확인
2-4. 롤백
kubectl rollout undo -n anotherclass-123 deployment/api-tester-1231
이전 버전으로 손쉽게 복원됨
Service 실습
3-1. Service 명으로 내부 API 호출
Pod 내부에서 DNS를 통해 호출:
curl http://api-tester-1231:80/version
3-2. Deployment에서 ports
제거, Service의 targetPort
수정
containerPort
제거 후에도 호출 정상 작동 확인 → targetPort 명시로 연결 가능
HPA 실습
4-1. 부하 발생 → 자동 스케일 확인
CPU 부하 API 호출:
curl "http://192.168.56.30:31231/cpu-load?min=3&thread=5"
kubectl top pods
로 부하 확인일정 시간 후 Replica 수 증가 → 자동 스케일 아웃 확인
4-2. behavior 미사용 설정 실습
behavior
항목 제거하고 부하 재시도 → 즉각적인 반응성과 디폴트 동작 확인
미션4 소감
Pod가 죽어도 데이터는 살아있고, 서비스 중단 없이 업데이트되고, CPU 부하에 따라 알아서 확장되는 것을 직접 확인하니 쿠버네티스가 왜 필요한지 확실히 와닿았다.
PVC는 데이터 지속성을, Deployment는 무중단 배포를, Service는 안정적인 통신을, HPA는 자동 확장성을 제공한다는 것을 실습으로 체감할 수 있었다.
댓글을 작성해보세요.