서론
kube-apiserver는 Kubernetes의 주요 관리 컴포넌트이다.
우리가 kubectl 명령어를 실행하면 실제로는 kube-apiserver에게 요청을 보내는 것이다.
kube-api에 대해서 자세히 알아보자
Kube-api server

- 사용자가 파드 생성 요청을 보내면 요청에 대한 인증과 스키마를 검증한다.
- 저 파드 객체를 생성한다.
- etcd에 파드 정보를 업데이트 하고 사용자에게 파드가 생성되었음을 알린다.
- 스케줄러는 kube-apiserver를 지속적으로 감시하다 노드가 할당되지 않는 새 파드를 발견한다.
- 스케줄러는 새 파드를 배치할 적합한 노드를 찾아 kube-apiserver에 전달한다.
- kube-apiserver는 해당 정보를 etcd클러스터에 업데이트 한다.
- kube-apiserver는 이 정보를 해당 워커 노드의 Kubelet으로 전달한다.
- kubelet은 노드에 파드를 생성하고 컨테이너 런타임에게 애플리케이션 이미지를 배포하도록 지시한다.
- 작업이 끝나면 Kubelet은 상태를 API서버에 보고하고, API 서버는 다시 etcd클러스터에 데이터를 업데이트 한다.
- kube-apiserver는 etcd 데이터 저장소와 직접 상호작용하는 유일한 컴포넌트이다.
- 스케줄러, kube-controller-manager, kubelet과 같은 다른 컴포넌트들은 각자의 영역에서 클러스터를 업데이트하기 위해 API 서버를 사용한다.
- 설치
- kubeadm 구축시 kube-system의 kube-api 파드를 마스터 노드에 배포한다
- /etc/kubernetes/manifests/kube-apiserver.yaml을 통해 위 파드의 옵션들을 볼 수 있다.
Comment