Link Search Menu Expand Document

문제를 통해 배우는 쿠버네티스

쿠버네티스 인사이드 - 06 실제 쿠버네티스의 파드 배포 흐름

쿠버네티스 파드에 문제가 생겼다면

파드를 실수로 지웠다면?

  • 파드만 배포된 경우에는 복구 불가능
  • 디플로이먼트로 배포된 경우에는 새로운 파드가 생성됨

쿠버네티스가 파드를 대하는 자세

  • 노드에 문제가 생겨 파드를 옮겨야 할 경우 파드를 삭제 후 재생성

쿠버네티스 워커 노드의 구성 요소에 문제가 생겼다면

kubelet에 문제가 생길 경우

systemctl stop kublet 
  • 배포가 제대로 이루어지지 않음

컨테이너 런타임에 문제가 생길 경우

systemctl stop docker
kubectl scale deployment del-deploy --replicas=6
  • 문제가 생긴 워커 노드 이외의 노드에 배포가 진행됨
  • 문제가 생긴 워커 노드의 kubelet이 이를 인식하여 API 서버에 알리고 스케줄러가 그 워커 노드에는 배포를 스케줄링하지 않음

스케줄러 역할

systemctl start docker
kubectl scale deployment del-deploy --replicas=9
  • 스케줄러가 자동으로 균형을 맞춰 각 워커 노드에 3개의 파드가 생성됨

쿠버네티스 마스터 노드의 구성 요소에 문제가 생겼다면

스케줄러가 삭제된다면?

kubectl delete pod kube-scheduler-m-k8s -n kube-system
  • 중요한 파드는 즉시 재생성됨

kubelet이 중단된다면?

systemctl stop kubelet
kubectl delete pod kube-scheduler-m-k8s -n kube-system
kubectl create deployment nginx --image=nginx
kubectl scale deployment nginx --replicas=3
  • 명령이 동작하지만 스케줄러 삭제가 진행되지 않음
  • 스케줄러는 정상 동작하므로 배포와 스케일링 모두 정상적으로 수행됨

컨테이너 런타임이 중단된다면?

systemctl stop docker
kubectl get pods
  • 모든 명령어가 응답하지 않음
  • API 서버를 핸들링하는 수단이기 때문에 보호받아야 함
  • 여러 개의 마스터 노드를 사용하는 것을 권장