Kubernetes Component - 쿠버네티스 컴포넌트
Notepad96
·2021. 10. 26. 23:59
1. 쿠버네티스 클러스터 (Kubenetes Cluster)
쿠버네티스 클러스터는 애플리케이션을 실행하기 위한 환경이다. 즉, 쿠버네티스를 실행한다는 것은 클러스터를 실행하는 것이라 할 수 있다.
이 클러스터는 컨트롤 플레인 컴포넌트와 하나 이상의 노드를 포함하는 노드 컴포넌트로 구성된다.
2. 컨트롤 플레인 컴포넌트 (Control Plane Component)
컨트롤 플레인 컴포넌트는 애플리케이션을 실행 상태를 유지하거나 애플리케이션이 어떤 Pod, 컨테이너를 사용할지 등 상태를 유지 및 관리한다.
이같은 동작을 쿠버네티스에서는 스케줄링이라하며 예를 들면 replicas 수와 구동 중인 파드 개수가 일치하지 않을 경우 추가적인 Pod를 생성 하는 등 클러스터에서 이벤트를 탐지하고 수행 한다.
2-1. API서버 (kube-apiserver)
컨트롤 플레인의 프론트 엔드로서 사용자로부터 요청을 받는다.
수평적으로 확장되도록 디자인되었으며 여러 kube-apiserver 인스턴스를 실행하고, 인스턴스간의 트래픽을 균형있게 배분할 수 있다.
2-2. etcd
쿠버네티스의 모든 데이터를 담는 저장소로 Key-Value 형식.
재해 복구를 위해서 etcd 클러스터 데이터를 주기적으로 백업해야 한다.
2-3. 스케줄러 (kube-scheduler)
쿠버네티스의 기본 스케줄러로서 새로 생성된 파드를 감지하여 실행할 최적의 노드를 선택하는 컴포넌트
최적의 노드를 선택할 때는 점수를 계산하여 높은 노드를 선택하는데 여기에서는 어피니티, 리소스 요구 사항 등 다양한 요소들을 사용하여 점수를 채점한다.
2-4. 컨트롤러 매니저 (kube-controller-manager)
컨트롤러 프로세스를 실행하는 컴포넌트
논리적으로는 분리되어있지만 복잡성을 낮추기 위하여 단일 바이너리로 컴파일되어 단일 프로세스 내에서 실행된다.
ㄴ 노드 컨트롤러: 노드가 다운되었을 때 통지와 대응에 관한 책임을 가진다.
ㄴ 레플리케이션 컨트롤러: 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드들을 유지시켜 주는 책임을 가진다.
ㄴ 엔드포인트 컨트롤러: 엔드포인트 오브젝트를 채운다(즉, 서비스와 파드를 연결시킨다.)
ㄴ 서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.
이 같은 컨트롤러들을 구종하는 컨트롤러 마스터 컴포넌트
2-5. 클라우드 컨트롤러 매니저 (cloud-controller-manager)
클러스터를 클라우드 공급자의 API에 연결하고, 해당 클라우드 플랫폼과 상호 작용하는 컴포넌트와 그렇지 않는 컴포넌트를 구분할 수 있다.
3. 노드 컴포넌트 (Node Component)
노드 컴포넌트는 최소 하나의 노드로 구성된 컴포넌트로서 노드는 애플리케이션과 워크로드를 실제로 실행한다.
따라서 노드 컴포넌트는 동작 중인 파드를 유지시키고 쿠버네티스 런타임 환경을 제공한다.
3-1. kubelet
각 노드에서 실행되는 에이전트로 파드에서 컨테이너가 동작하도록 관리
kubelet은 파드 스펙(podspec) 집합을 받아 이에 따라 파드가 동작하는지를 관리한다.
3-2. kube-proxy
각 노드에서 실행디는 네트워크 프록시로 서비스 개념의 구현부
노드의 네트워크 규칙을 관리하여 파드간 통신을 할 수 있도록 한다.
3-3. 컨테이너 런타임 (container runtime)
컨테이너 실행을 담당하는 소프트웨어
Docker, containerd, Kubernetes Container Runtime Interface 같은 것들이 있다.
4. 참 조
'Kubernetes' 카테고리의 다른 글
Kubernetes 용어 정리 (0) | 2021.11.01 |
---|---|
쿠버네티스(Kubernetes)란? (0) | 2021.09.13 |