Kube API server

2023. 4. 8. 10:12Kubernetes

kubectl 명령어를 실행하면, 

kubectl utility 는 kube-api server에 도달한다.

 

그럼 kube api server는 요청을 인증하고, 유효성을 확인한다.

그럼 etcd cluster에서 데이터를 가져와서 응답한다. 

3단계 임 

1. Authenticate user (사용자 인증)

2. Validate Request (요청 유효성 검사)

3. Retrieve data (데이터 전달)

 

굳이 kubectl 을 쓸 필요는 없다.대신 API 를 직접 호출할수있다.

POST 요청등으로 가능!

 

POST로 pod 생성 예시

요청하면, 인증하고, 유효성 검증한다.

curl -X POST /api/v1/namesapces/default/pods ... [other]
-> Pod created!

1. Authenticate user (사용자 인증)

2. Validate Request (요청 유효성 검사)

3. Retrieve data (데이터 전달)

4. Update ETCD (ETCD에 업데이트) : node가 없는 pod가 생된다.

5. Scheduler(스케줄러) : 적절한 노드에 pod 를 위치시키고, api server에 보고한다.

(스케줄러는 API 서버를 지속적으로 모니터링 한다,

node 가 없는 pod 가 있구나를 알게된다.)

 

6. update ETCD: Api server는 etcd cluster에 업데이트한다.

7. api server는 적절한 worker node 의 kubelet 한테 정보를 넘겨준다.

8. Kubelet : kubelet은 그 노드에 pod 를 생성하고, application image를 배포하도록 컨테이너 엔진한테 지시한다.  

9. kubelet 은 apiserver 한테 상태업데이트됐다고 보고한다.

10. api server는 그 데이터를 etcd cluster에 업데이트 한다.

 

스케줄러 모니터링할때 어떤 방식을 쓰는지 궁금하네

-> watch API 또는 일정 주기로 API 서버에 쿼리를 수행해서 클러스터의 상태를 모니터링 한다. 

여기 정리했음: https://growing-dev.tistory.com/541 

 

kubeadmin 도구를 이용해서 클러스터를 부트 스트랩하면 위 순서를 알필요 없지만, 

하드웨어를 설정하는 경우  Kubernetes release 페이지에서 binary 형태로 이용가능하다.

 

kube-apiserver는 많은 매개변수로 실행된다. 

지금 다 이해할 필요는 없지만, 잘 이해해두면 나중에 클러스터, 모든 구성요소 구성시에 쉬울거임!

인증, 승인, 암호화, 보안에 다양한 방식이 있어서 선택지가 많다.

 

이 섹션에서 볼 모든 구성요소는 연결된 인증서를 갖고 있다. 

etcd-server 옵션은 etcd server의 ip를 명세한다. 

 

kube-api server 옵션 보는법은 클러스터를 어떻게 셋팅했냐에 따라 다르다.


kubectl get pods -n kube-system

#kubeadmin  tool 로 셋팅했다면 
kube-apiserver의  master node pod 에 배포한다.

위치는 
cat /etc/kubernetes/manifests/kube-apiserver.yaml

#kubeadmin 없이 셋팅했다면 
cat etc/systemd/system/kube-apiserver.service

# 돌고있는 process 보는법
ps -aux |grep kube-apiserver