PaaS/Kubernetes

(Kubernetes) Kubernetes Architecture

armyost 2021. 3. 11. 23:15
728x90

 

ETCD
- Kubernetes의 기본 데이터베이스다. 모든 쿠버네티스 클러스터 상태를 저장하고 복제


Kube Controller Manager

컨트롤러는 실제로 클러스터를 실행하고 쿠버네티스 controller-manager에는 여러 컨트롤러 기능이 하나로 통합되어 있습니다. 하나의 컨트롤러는 스케줄러를 참고하여 정확한 수의 포드가 실행되게 합니다. 포드에 문제가 생기면 또 다른 컨트롤러가 이를 감지하고 대응합니다. 컨트롤러는 서비스를 포드에 연결하므로 요청이 적절한 엔드포인트로 이동합니다. 또한 계정 및 API 액세스 토큰 생성을 위한 컨트롤러가 있습니다.

kube-scheduler

클러스터가 양호한 상태인가? 새 컨테이너가 필요하다면 어디에 적합한가? 쿠버네티스 스케줄러는 이러한 것들을 주로 다룹니다. 스케줄러는 CPU 또는 메모리와 같은 포드의 리소스 요구 사항과 함께 클러스터의 상태를 고려합니다. 그런 다음 포드를 적절한 컴퓨팅 노드에 예약합니다.

 

kube-apiserver

쿠버네티스 클러스터의 api를 사용할수 있게 해주는 프로세스입니다. 클러스터로 요청이 왔을때 그 요청이 유효한지 검증하는 역할을 합니다. 쿠버네티스로의 모든 요청은 kube-apiserver를 통해서 다른 곳으로 전달되도록 되어 있습니다. kube-apiserver는 수평적으로 확장이 가능하게 설계가 되어 있어서, 여러대의 장비에 여러개를 띄워놓고 사용할 수 있습니다.


kubelet is agent of each node in a cluster

각 컴퓨팅 노드에는 컨트롤 플레인과 통신하는 매우 작은 애플리케이션인 kubelet이 있습니다. kublet은 컨테이너가 포드에서 실행되게 합니다. 컨트롤 플레인에서 노드에 작업을 요청하는 경우 kubelet이 이 작업을 실행합니다.

Communicate each other worker node with Kube-proxy

각 컴퓨팅 노드에는 쿠버네티스 네트워킹 서비스를 용이하게 하기 위한 네트워크 프록시인 kube-proxy도 있습니다. kube-proxy는 운영 체제의 패킷 필터링 계층에 의존하거나 트래픽 자체를 전달하여 클러스터 내부 또는 외부의 네트워크 통신을 처리합니다.

 

 

ComponentDefault portsProtocol

Kubernetes API Server 6443 TCP
etcd Server client API 2379-2380 TCP
Kubelet API 10250 TCP
kube-scheduler 10251 TCP