kube-apiserver란
kube-apiserver는 Kubernetes의 중앙 관리 허브이다.
모든 요청과 변경 사항은 kube-apiserver를 통해 이루어지게된다.
kubectl get pods
위와 같이 kubectl 명령어를 실행하면 kubectl은 kube-apiserver에 요청을 보낸다.
kube-apiserver는 요청을 인증(authentication) 및 검증(valication)하며, 요청된 데이터를 ETCD에서 조회하며 응답을 반환한다.
Kube-api server가 pod를 생성하는 과정
사용자가 Pod을 생성하는 요청을 보낸 경우, 아래와 같은 Flow를 통해 사용자의 요청을 처리하게 된다.
1) 사용자가 kubectl apply -f pod.yaml 실행
2) kubectl이 kube-apiserver에 Pod 생성 요청을 전달
3) kube-apiserver가 요청을 인증 및 검증
4) kube-apiserver가 ETCD에 Pod 객체를 저장
5) 사용자에게 Pod가 생성되었다는 요청을 반환
이후 Scheduler가 Pod를 감지하고 노드에 배치하는 과정이 이어지게된다.
스케줄링 프로세스는 다음과 같다.
1) Kubernetes 스케줄러가 kube-apiserver를 모니터링하는 도중 새로운 Pod가 있지만 아직 Node가 할당되지 않았음을 감지한다.
2) 스케줄러가 적절한 Node를 선택하여 kube-apiserver에 전달한다.
3) kube-apiserver가 ETCD의 데이터를 업데이트한다.
4) kube-apiserver가 선택된 Node의 kubelet에 Pod 생성 요청을 전달한다.
5) kubelet에 컨테이너 런타임을 사용하여 Pod를 실행한다.
6) kubelet이 실행된 pod 정보를 kube-apiserver에 보고한다
7) kube-apiserver가 ETCD의 데이터를 최종 업데이트한다.
즉 모든 변경사항은 kube-apiserver를 통해 이러우지며, ETCD에 저장된 후에 완료처리된다.
kube-apiserver 의 설정 방법
- kubeeadm을 사용한 경우
- kube-apiserver는 Pod의 형태로 자동 배포된다.
- 해당 파드는 kube-system 네임스페이스에서 실행됨
- 관련된 설정 파일은 /etc/kubernetes/manifests/kube-apiserver.yaml에 저장된다.
- 수동으로 Kubernetes를 구축한경우
- kube-apiserver 바이너리를 다운로드하고 직접 실행해야함
- 설정 파일은 etc/systemd/system/kube-apiserver.service에 위치한다.
'CKA' 카테고리의 다른 글
(TIL) Kube-Scheduler (0) | 2025.03.09 |
---|---|
(TIL) Kube Controller Manager in Kubernetes (0) | 2025.03.09 |
(TIL) Kubernetes의 ETCD (0) | 2025.03.03 |
(TIL) ctr, cri, nerd-control (0) | 2025.03.03 |
(TIL) Cluster Archiectuer (0) | 2025.03.03 |