본 게시글은 CKA 취득 위해 공부한 내용 정리하기 위해 작성한 글이며 첨부한 자료 및 내용은 Udemy에서 제공하는 CKA강의를 활용하였습니다. (www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/)
저작권 등에 문제가 생길 시 게시글을 내리도록 하겠습니다.
Kube-api Server
Kube-api server는 Kubernetes에서 Management 역할을 합니다.
Client에서 kubectl 명령어를 입력하면, 이는 kube-apiserver로 전달되는데, 우선 사용자가 해당 명령어를 사용할 수 있는지 권한 인증을 하고, Request가 올바른지 확인한 다음 ETCD로부터 데이터를 받아 이를 Clinet에게 전송합니다. kube-api server는 ETCD와 통신할 수 있는 유일한 componet입니다.
그러나 post request를 direct로 api를 호출하면 위와 같은 인증을 거치지 않고 바로 실행할 수 있습니다.
만약 다음과 같은 명령어를 실행하면 노드를 배정하지 않고 POD를 생성할 수 있다.
curl –X POST /api/v1/namespaces/default/pods ...[other]
Scheduler는 지속적으로 API Server를 모니터하다가 새로운 POD가 생성된 것을 확인합니다. 이 POD를 적절한 NODE에 할당할 것을 다시 kube-api server에게 전달합니다. 그러면 API-SERVER는 ETCD에 정보를 업데이트하고 적절한 Worker 노드의 kubelet에 전달합니다. kubelet은 해당 노드에 POD를 생성한 뒤 CRE에게 Deploy할 것을 요청합니다.
이와 같은 과정이 마무리 되면, kubelet은 status를 api-server에 전달하고 api-server는 다시 ETCD에 업데이트 합니다.
정리하면 아래와 같은 sequence로 kube-api server가 동작합니다.
읽어주셔서 감사합니다.