kube-apiserver는 쿠버네티스 클러스터의 핵심 구성 요소로, 클러스터 상태를 관리하고 모든 클라이언트 요청을 처리하는, 즉 쿠버네티스 API를 처리하는 중앙 관리 인터페이스이다.
컨트롤 플레인(Control Plane)의 중요한 부분으로, 클러스터와의 모든 상호작용은 kube-apiserver를 통해 이루어진다.
또한 etcd data store와 유일하게 직접 상호작용하는 구성요소이다.
(보통 kubelet, scheduler 등은 API server를 사용해서 각 영역의 클러스터에서 업데이트를 수행한다.)
주요 역할
- 클라이언트 요청 처리:
- 사용자, kubectl, 애플리케이션, 그리고 내부 쿠버네티스 컴포넌트가 클러스터와 통신할 때 API 요청을 보낸다.
- 이 요청은 모두 kube-apiserver가 처리한다.
- 인증 및 권한 부여:
- 요청을 보낸 사용자의 신원 인증(Authentication)을 수행한다.
- RBAC(Role-Based Access Control)이나 기타 정책을 기반으로 요청에 대한 권한 부여(Authorization)를 처리한다.
- 클러스터 상태 관리:
- 클러스터의 상태 정보를 etcd에 저장하고 조회한다.
- 모든 클러스터 상태 데이터(예: 파드, 서비스, 디플로이먼트 정보 등)는 etcd에 저장되며, kube-apiserver가 이를 관리한다.
- 유효성 검사 및 요청 처리:
- API 요청을 처리하기 전에 요청 데이터를 유효성 검사한다.
- 요청이 올바르지 않으면 에러를 반환한다.
- 다른 컨트롤 플레인 컴포넌트와 통신:
- kube-apiserver는 스케줄러, 컨트롤러 매니저, 노드 컴포넌트와 같은 다른 쿠버네티스 컴포넌트와 통신하여 클러스터의 상태를 조정한다.
kube-apiserver의 데이터 흐름
ex) user가 'kubectl get nodes' 명령을 치면 kube-apiserver에 먼저 접근 해서 해당 User/Request에 대해 인증을 확인하고 검증(validate)한다. 그런 다음 etcd-cluser를 통해 데이터를 회수(retrive)한 뒤 해당 정보를 보여준다.
- kubectl 또는 다른 클라이언트가 요청을 보냄:
- API 요청 수신: 사용자는 kubectl, REST 클라이언트, 또는 다른 도구를 통해 kube-apiserver에 API 요청을 보낸다.
- 예: kubectl get pods
- kube-apiserver가 요청을 수신:
- 인증 및 권한 검증: kube-apiserver는 요청이 신뢰할 수 있는 사용자로부터 왔는지 확인(인증)한다.
- 요청이 허가된 작업인지 확인(권한 부여)한다.
- API 요청을 인증, 권한 검증, 유효성 검증.
- 요청 처리: etcd와 상호작용
- 요청이 유효하면 해당 작업(예: 파드 생성, 서비스 업데이트 등)을 수행한다.
- 요청에 따라 클러스터의 상태 데이터를 etcd에 읽거나 기록
- 결과 반환:
- 요청 성공 시 클라이언트에 상태 데이터를 반환
- 요청 실패 시 에러 메시지를 반환
반응형
'Container > Kubernetes' 카테고리의 다른 글
[K8S] kube-proxy (0) | 2024.12.28 |
---|---|
[K8S] Kube-controller-manager (0) | 2024.12.24 |
[K8S] ETCD (1) | 2024.12.24 |
[K8S] 컨테이너 런타임 (0) | 2024.12.24 |
[K8S] TS - Control Plane Failure (0) | 2024.04.28 |