본문 바로가기
Computer Science/KUBERNETES

Kube Scheduler / Kubelet / Kube Proxy - Certified Kubernetes Administrator(CKA)

by sy.cho__ 2020. 10. 19.

본 게시글은 CKA 취득 위해 공부한 내용 정리하기 위해 작성한 글이며 첨부한 자료 및 내용은 Udemy에서 제공하는 CKA강의를 활용하였습니다.  (www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/)

저작권 등에 문제가 생길 시 게시글을 내리도록 하겠습니다. 


Kube Scheduler

kube scheduler는 node에 적재할 pod를 스케줄링 하는 역할을 한다. 

직접 적재하는 것이 아니라, 어떤 pod를 어떤 node에 위치할지 decide만 하는 것이다.(Load하는 건 kubelet의 역할이다)

위와 같이 CPU 10을 필요로 하는 Container가 있다고 가정하자. 

Scheduler는  Container를 배치할 최적의 node를 search한다. 우선 Filter node하여 자원이 부족한 node는 제외하고, 남은 Node중에 Rank를 매긴다. Node의 자원에서 Container가 필요한 자원을 뺀 후 0~10점 사이로 rank를 정해 최종 node를 선정한다. 

물론 scheduling 방법은 customize 할 수 있다. 


Kubelet

Kubelet은 Schduler의 명령에 따라 Container를 Node에 적재하거나 제거하거나 하는 역할을 한다. 

그리고 주기적으로 container의 상태를 master에게 전달하기도 한다. 

먼저 container를 Load 하라는 지시를 받으면, kubelet은 CRE(Container Runtime Engine)에게 필요한 Image와 instance를 요청한다. kubelet은 POD의 상태를 모니터링하고 kube-api server에게 상태를 전달한다.


Kube Proxy

Kubernetes 내부에선 모든 POD는 다른 모든 POD에 닿을 수 있다. 이는 Cluster에 POD networking solution이 배포되어 있기 때문인데, POD Network는 내부 가상 network로 Cluster의 Node를 통해 모든 POD와 통신할 수 있다. 

kube-proxy는 각 노드에서 실행되고 있으며,  IPTABLE rule을 사용하여 kube-proxy <-> server <-> kube proxy와 통신할 수 있다. 

반응형