도커 허브에 이미지 넣기
- 사용 할 컨테이너를 만들어서 허브에 넣는다.
파드 띄우기
- 개발자가 허브에 컨테이너를 이용하기 위해 kubectl create,deployment 명령어나 yaml파일 등을 이용해서 마스터 노드에 api를 날린다.
- 마스터노드의 api 에서 명령어를 받고, 스케줄러에 어떤 노드에 파드를 만들지 물어봄
- 스케줄러는 특정노드를 지정하여 api에 알려줌
- api는 해당 노드의 kubelet 에 파드 생성을 요청
- kubelet은 본인 노드의 도커로 도커 명령어로 컨테이너 생성을 요청
- 도커는 허브에서 이미지를 거져와 컨테이너를 수행, 쿠버네티스는 이렇게 생성된 컨테이너를 파드라는 단위로 일컫는다.
쿠버네티스 아키텍쳐
마스터 노드(control plane)
- api : api의 요청을 수행
- controller : 노드들에 pod가 잘 돌아가는지 확인하다 잘 동작하지 않는것이 있으면 api에 해당 컨테이너 수행 요청, 그러면 api는 다시 스케줄러에 문의, 즉 수행중인 컨테이너 갯수 보장
- scheduler : pod를 띄울때 어떤 노드가 좋은지 등을 etcd를 살펴보고 판단하여 api 에 전달한다.
- etcd : 워커노드의 상태와 쿠버네티스에 대한 상태 정보가 담김
워커 노드
- cadvisor : 각 노드별로 갖고 있다. 각 노드별 상태정보를 체크해서 마스터 노드의 api로 날리면, 마스터 노드는 이를 etcd 저장소에 저장한다.
- kubelet : 마스터 노드의 api로 부터 받은 요청을 해당 노드 도커 명령어 수행