반응형

쿠버네티스 클러스터의 구성 요소는 크게 세가지가 있다.

- 컨트롤 플레인(Control Plane)

- 노드(Node)

- 애드온(Addons)

 

다음 쿠버네티스 컨트롤러 매니저 이미지를 보며 항목별로 알아보도록 하자.

 

쿠버네티스 컨트롤러 매니저

 

1) Control Plane(컨트롤 플레인)

왼쪽 박스는 컨트롤플레인으로, 클러스터의 전체를 제어한다. 클러스터에 대한 전반적인 결정을 수행하고 클러스터 이벤트를 감지하고 대응하는 일을 한다. ex. 스케줄링 등

개발환경에서는 3개 이상의 멀티 컨트롤플레인 환경을 구성한다. 컨트롤플레인의 구성에 대해 알아보도록 한다.

 

(1) API 서버(kube-apiserver)

쿠버네티스 클러스터의 모든 구성요소들과 메세지를 주고받기 위해서는 항상 컨트롤 플레인의 api서버를 지나가야 한다. 컨트롤플레인에 대한 프론트엔드를 담당한다.

 

(2) 키-값 저장소(etcd) [엣씨디]

쿠버네티스 클러스터의 모든 정보데이터들을 저장하는 일관성과 고가용성을 지원하는 키-값 저장소이다. k8s의 모든 정보를 가지고 있기 때문에 DB라고 보면 된다. 그리고 발음이 특이해서 옆에 따로 적어봤다.

 

(3) 쿠버네티스 스케줄러(kube-scheduler)

운영체제의 핵심은 스케줄러다. 쿠버네티스 스케줄러는 새로 생성되는 파드를 감지하고 적절한 노드에 배정하는 일을 한다.

 

(4) 쿠버네티스 컨트롤러 관리자(kube-controller-manager)

그림의 c-m에 해당한다. 컨트롤러는 API서버를 통해 클러스터의 상태를 감시하고 필요한 상태로 이행하는 기능을 가진다. 컨트롤 관리자의 종류는 다음과 같다

 

- 노드 컨트롤러(Node controller) : 노드를 관리하며 노드가 다운 되었을 때 알림과 대응을 한다.

- 레플리케이션(Replication) 컨트롤러 : 복제 컨트롤러를 사용하는 모든 오브젝트를 관리하며 알맞은 수의 파드를 유지하는 기능을 한다.

- 엔드포인트(Endpoint) 컨트롤러 : 서비스와 파드를 연결한다.

- 서비스 어카운트(Service Account) 및 토큰 컨트롤러(Token Controller) : 쿠버네티스의 네임스페이스, 계정, 토큰을 담당한다.

 

(5) 클라우드 컨트롤러 관리자(cloud-controller-manager)

그림의 c-c-m에 해당한다. 클라우드를 제공하는 업체의 기능과 클라우드에서 동작하는 쿠버네티스 구성 요소와 상호작용할 수 있도록 하는 컨트롤러 관리자이다. 쿠버네티스 1.6버전에서 도입된 알파 기능이다. 초반에는 이게 없어서 api와 cloud provider api가 직접 통신했다. 클라우드와 상호작용하는것이라고 생각할 수 있다. 종류는 다음과 같다.

 

- 노드 컨트롤러 : 노드가 응답이 없을 때 클라우드상에서 노드가 삭제되었는지 확인을 담당한다.

- 라우트 컨트롤러 : 클라우드 인프라의 네트워크 경로 구성을 담당한다.

- 서비스 컨트롤러 : 클라우드 로드밸런서 관리를 담당한다.

 

클라우드 컨트롤러 관리자는 클라우드 공급자(AWS, Azure, GCP, OCI 등)의 의존성을 갖는다.

 

 

2) Node(노드)

노드는 쿠버네티스의 컨테이너 런타임 환경을 제공하며 동작중인 파드를 유지하는 기능을 한다. 예전에 불리던 이름으로는 미니언(Minion), 워커(Worker)노드라고 불렸다.

 

(1) kubelet

각 노드에서 실행되는 에이전트로 컨트롤플레인으로부터 제공받은 파드의 구성 정보를 받아서 컨테이너가 확실하게 동작하는 것을 관리하고 보장한다.

 

(2) 쿠버네티스 프록시(kube-proxy)

호스트 레벨의 네트워크 규칙을 구성하고 외부 연결 포워딩을 담당한다. 쿠버네티스의 서비스 추상화가 가능하도록 한다. 쉽게말해서 pod(컨테이너)에게 네트워크를 제공해주는 것이다.

 

(3) 컨테이너 런타임

컨테이너의 동작을 책임지는 구성요소이다. 지원하는 컨테이너 런타임은 다음과 같다.

 

- Docker -> 1.20버전부터는 더이상 지원하지 않는다.

- containerd -> 도커는 이것을 사용하여 컨테이너를 만든다.(위의 지원중단과 헷갈리지 말기)

- CRI-O

- Kubernetes CRI(Container Runtime Interface)를 구현한 모든 런타임

 

 

3) Addon(애드온)

쿠버네티스 클러스터에 추가할 수 있는 확장기능을 제공해준다. 주요 애드온 구성요소로는 다음과 같다.

- 클러스터 DNS : 쿠버네티스 클러스터 내에 여러 오브젝트(파드,컨테이너,서비스 등)에 대한 DNS 레코드 제공

- 대시보드 : k8s 클러스터를 위한 웹 기반 인터페이스 제공

- 컨테이너 리소스 모니터링 : 컨테이너들에 대한 리소스 사용량에 대한 인터페이스 제공

- 클러스터 로깅 : 컨테이너 로그를 중앙 로그 저장소에 저장하고 관리하는 기능 담당

 

 

4) 쿠버네티스 API

(1) API 버전 규칙

A. 알파 버전 API

이 버전은 버그가 있을 수도 있으며 언제든 공지 없이 중단될 수 있다. 버전 이름에 alpha가 포함되어있다.

 

B. 베타 버전 API

코드가 잘 테스트되어있어서 이 기능을 활성화해도 안전하다. 전반적인 기능에 대한 기술지원이 중단되지 않는다. 버전 이름에 beta가 포함되어 있다.

 

C. 안정화 버전 API

버전 이름이 v?? 이거나 ??(정수) 이다.

 

(2) API 그룹

- 코어 그룹

- 코어 이외 그룹

 

 

 

<참고자료>

 

쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.

kubernetes.io

 

반응형

+ Recent posts