Kubernetes Component - 쿠버네티스 컴포넌트

Notepad96

·

2021. 10. 26. 23:59

300x250

 

 

 

 

 

 


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.io

 

 

300x250

'Kubernetes' 카테고리의 다른 글

Kubernetes 용어 정리  (0) 2021.11.01
쿠버네티스(Kubernetes)란?  (0) 2021.09.13