문제를 통해 배우는 쿠버네티스
쿠버네티스 파드에 문제가 생겼다면
파드를 실수로 지웠다면?
- 파드만 배포된 경우에는 복구 불가능
- 디플로이먼트로 배포된 경우에는 새로운 파드가 생성됨
쿠버네티스가 파드를 대하는 자세
- 노드에 문제가 생겨 파드를 옮겨야 할 경우 파드를 삭제 후 재생성
쿠버네티스 워커 노드의 구성 요소에 문제가 생겼다면
kubelet에 문제가 생길 경우
컨테이너 런타임에 문제가 생길 경우
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 서버를 핸들링하는 수단이기 때문에 보호받아야 함
- 여러 개의 마스터 노드를 사용하는 것을 권장