2022. 2. 27. 23:37ㆍKubernetes
지난 시간에는 ETCD에 대해서 알아보았다. 오늘은 Kubernetes 마스터 노드에서 가장 중요한 역할을 하고 있는 Kube-api-server에 대해서 알아보도록하겠다.
Kube-api-server는 마스터 노드에서 가장 중요한 역할을 하고 있는데 쿠버네티스의 데이터베이스인 ETCD와 유일하게 통신하는 컴포넌트이고 워커 노드들과도 직접 통신하고 있다. Scheduler나 Controller Manager 같은 컴포넌트들도 모두 kube-api-server와 통신하여 pod, container를 생성하고 줄이고 하게 되어있다.
Pod을 새로 생성하는 시나리오의 프로세스를 살펴보도록하면서 kube-api-server가 어떤 역할을 하고 있는지 살펴보도록하겠다.
먼저 Pod을 새로 생성하는 요청이 들어오면 kube-api-server에서 Auth를 확인하고 올바른 request인지 점검한다.
그리고 나서 마스터 노드에 요청 받은 Pod을 생성한다. 이 Pod은 아직 워커노드에 할당되어 있지 않다.
그리고 나서 새로운 pod이 생겼다는 사실을 etcd에 업데이트한다.
잠시 후에 Scheduler가 새로운 주인 없는 Pod이 생겼음을 확인하고 적당한 워커노드를 찾아서 kube-api-server에 알려준다.
그러면 kube-api-server는 etcd를 업데이트 하고 해당 워커노드의 kubectl에게 일을 준다.
워커노드는 전달 받은대로 Pod에 Docker를 시켜서 컨테이너를 생성하게 한다.
컨테이너 생성이 완료되면 kubectl은 다시 kube-api-server에 완료를 알리고
kube-api-server는 etcd를 업데이트 하게 된다.
이 과정에 새로운 Pod이 생성되는 과정이다.
다른 오브젝트들을 생성하는 과정도 이와 크게 차이가 없다고 한다. 과정을 살펴보면 각각의 컴포넌트들을 kube-api-server에게 일을 받고, kube-api-server에게 완료를 알려주어 일을 처리한다. 결국 중간에서 kube-api-server가 중재하는 역할을 하는 것이다.
'Kubernetes' 카테고리의 다른 글
Persitent Volume, Persistent Volume Claim, Storage Class (0) | 2022.03.26 |
---|---|
RBAC 설정하는 방법 (0) | 2022.03.25 |
Kubernetes Config란? (0) | 2022.03.24 |
ETCD란? (0) | 2022.02.27 |
Kubernetes Namespace란? (0) | 2022.02.22 |