what is kube-api server
- kube-apiserver는 클러스터에서 변경을 위해 수행해야 하는 모든 작업의 중심에 있다.
- kubectl 명령어를 실행하면, 실제로 kubectl 유틸리티가 kube-apiserver에 접근한다.
- kube-apiserver는 etcd와 직접 상호작용하는 유일한 구성요소
api 서버의 역할
- authenticate user
- validate request
- retrieve data from etcd
- update etcd
파드 생성 예제로 보는 api서버의 역할
- api서버는 유저 인증, 요청에 대한 유효성 검사 실행
- api서버가 파드를 생성 그러나 노드에 할당하지 않음
- api서버가 etcd에 정보를 업데이트하고 새로운 파드가 생성되었음을 사용자에게 알림
- 스케줄러는 api서버를 계속 모니터링하고 노드가 할당되지 않은 새로운 파드를 인지함
- 스케줄러는 새로운 파드를 배치할 적절한 노드를 식별하고 이를 api서버에 알림
- api서버는 이 정보를 etcd에 업데이트하고, 적절한 워커 노드의 kubelet에 전달
- kubelet은 노드에 파드를 생성하고, 컨테이너 런타임 엔진에 app 이미지 배포를 지시
- 파드 생성이 완료되면 kubelet은 상태를 api서버에 업데이트
- api서버는 데이터를 etcd에 다시 업데이트
다른 요청이 들어와도 위와 같은 비슷한 패턴으로 동작함.
아키텍쳐 링크