쉽게 배우는 쿠버네티스 - 05
in Devops on Kubernetes
파드에 문제가 생겼다면?
- 파드를 실수로 지웠다면?
- 파드만 배포된 경우
- 난감하다. 그냥 지워진거다.
- 디플로이먼트 형태라면 ?
- 파드는 디플로이먼트 형태로 파드를 유지하기 때문에 문제가 생기지 않는다.
- 파드는 단일객체이지만 디플로이먼트는 파드를 감싸고 있는 객체이다.
- 파드가 지워지게 되면 다시 만들게 된다.
- 파드만 배포된 경우
쿠버네티스가 파드를 대하는 자세(애완동물과 가축)
- 파드는 항상 다시 생성되는 경우가 많다
- 예를들면 업데이트를 한다거나, 노드가 이상해서 노드에 있는 파드를 옮겨야 한다는다든가
파드 배포
root@cp-k8s:~# k apply -f ~/_Lecture_k8s_starter.kit/ch5/5.1/del-
del-deploy.yaml del-pod.yaml
root@cp-k8s:~# k apply -f ~/_Lecture_k8s_starter.kit/ch5/5.1
deployment.apps/del-deploy created
pod/del-pod created
root@cp-k8s:~# k get pods
NAME READY STATUS RESTARTS AGE
del-deploy-d6c48dfbf-6crl4 1/1 Running 0 49s
del-deploy-d6c48dfbf-pxvnq 1/1 Running 0 49s
del-deploy-d6c48dfbf-qktx9 1/1 Running 0 49s
del-pod 1/1 Running 0 49s
- 디렉토리 형태로 배포를 지정해주면
- 디렉토리에 있는 yaml을 읽어서 바로 생성한다.
pod로 배포한 것 delete
root@cp-k8s:~# k delete pod del-pod
pod "del-pod" deleted
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~# k get pods
NAME READY STATUS RESTARTS AGE
del-deploy-d6c48dfbf-6crl4 1/1 Running 0 96s
del-deploy-d6c48dfbf-pxvnq 1/1 Running 0 96s
del-deploy-d6c48dfbf-qktx9 1/1 Running 0 96s
- pod로 배포하게 되면 쉽게 delete가 된다.
디플로이먼트로 배포한 것을 지우면?
root@cp-k8s:~# k get pods
NAME READY STATUS RESTARTS AGE
del-deploy-d6c48dfbf-6crl4 1/1 Running 0 3m22s
del-deploy-d6c48dfbf-pxvnq 1/1 Running 0 3m22s
del-deploy-d6c48dfbf-qktx9 1/1 Running 0 3m22s
root@cp-k8s:~# k delete pod del-deploy-d6c48dfbf-qktx9
pod "del-deploy-d6c48dfbf-qktx9" deleted
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~# k get pods
NAME READY STATUS RESTARTS AGE
del-deploy-d6c48dfbf-6crl4 1/1 Running 0 3m58s
del-deploy-d6c48dfbf-pxvnq 1/1 Running 0 3m58s
del-deploy-d6c48dfbf-wqhhk 0/1 ContainerCreating 0 2s
root@cp-k8s:~#
root@cp-k8s:~# k delete deployment del-deploy
deployment.apps "del-deploy" deleted
root@cp-k8s:~#
root@cp-k8s:~#
root@cp-k8s:~# k get pods
No resources found in default namespace.
root@cp-k8s:~#
- 기존의 파드가 사라지고 새로운 파드가 생성되는 것을 볼 수 있다.
- 이것은 deployment가 세 개를 유지해야 된다는 게 이미 규정되어 있기 때문이다.
- 지워지자마자 새로운 것을 다시 생성한다.
- 그래서 deployment를 지우려면 디플로이먼트를 삭제해야 한다.
- 즉 파드는 실수를 하면 날아가는 존재이지만 디플로이먼트는 파드의 숫자를 유지하는 존재이다.
쿠버네티스 구성 요소에 문제가 생긴다면?
- 대부분의 구성요소들은 문제가 생겨도 대부분 복구가 빠르게 일어난다.
- 통신하는 방식이 선언적으로 API에 선언한 것을 그대로 가져가는 것이 아닌 존재가 있다.
- 쿠버렛
- 쿠버렛에 문제가 생기면 API서버와 문제가 직접적으로 선언한 것을 가져가는 방식이 아니다.
- 그리고 선언적인 방식과 쿠버렛이 런타임으로 보내주는 방식이 아니다.
kubelet종료하기
root@cp-k8s:~# k get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
del-deploy-d6c48dfbf-692dh 1/1 Running 0 13s 172.16.132.4 w3-k8s <none> <none>
del-deploy-d6c48dfbf-hwtvx 1/1 Running 0 13s 172.16.103.134 w2-k8s <none> <none>
del-deploy-d6c48dfbf-zp28f 1/1 Running 0 13s 172.16.132.5 w3-k8s <none> <none>
- w1k8s에는 배포가 되지 않았다.
- 워커노드단에 kubelet에 문제가 생기면 배포가 제대로 이뤄지지 않는다.
Reference
https://www.redhat.com/ko/topics/containers/what-is-kubernetes