cloud bee

kubernetes master용 컴포넌트 본문

이론 및 개념정리/kubernetes

kubernetes master용 컴포넌트

who you 2022. 10. 21. 18:52

kubernetes master용 컴포넌트는 실제 클러스터 전체를 관리한다.

마스터 컴포넌트는 다음과 같이 존재한다.

etcd, kube-apiserver, kube-scheduler, kube-controller-manager, cloud-controller-manager

kubernetes 이미지이다.

 

1. etcd

코어 OS에서 개발한 고가용성을 제공하는 키-값 저장소로 분산 시스템에서 노드 사이의 상태를 공유하는 합의 알고리즘 중 하나인 raft 알고리즘을 구현한 것이다. etcdkubernetes에 필요한 모든 데이터를 저장하는 역할을 한다(database)

etcd는 서버 하나당 프로세스 1개만 사용할 수 있다. 보통 여러 대의 컴퓨터를 연결하여 시스템 하나처럼 구성하고, 여러 마스터 서버를 분산 및 실행하여 데이터의 안정성을 보장한다. 주기적으로 kubernetes의 클러스터를 운영하려면 etcd의 있는 데이터를 백업하도록 하는 게 좋다.

 

2. kube-apiserver

kube-apiserverkubernetes cluster의 API를 사용할 수 있도록 하는 컴포넌트이다.

kube-apiserver는 유효한 요청인지 확인한다. kubernetes API 스팩에 맞춰 특정 namespace에 존재하는 deployment list 요청을 받으면, 요청에 사용된 토큰이 해당 네임스페이스와 자원을 대상으로 요청을 실행할 권한이 있는지 검사하고, 권한이 있다면 deployment list를 조회하여 되돌려준다.

 

3. kube-scheduler

kube-scheduler은 kubernetes cluster안에서 자원할당이 가능한 노드가 있을경우 알맞은 노드를 선택하여 새롭게 만든 파드를 실행을 시키는 역할을 한다.

 

4. kube-controller-manager

우선 이것을 알기 전에 쿠버네티스에는 파드들을 관리하는 컨트롤러가 있다는 것을 기억한다. 컨트롤러 각각은 논리적으로 개별 프로세스지만 복잡도를 줄이기 위해 모든 컨트롤러를 바이너리 파일 하나로 컴파일 하여 단일 프로세스로 실행된다. 이제 컨트롤러의 개념을 알아보았으니 kube-controller-manager을 알아본다. kube-controller-manager은 컨트롤러 각각을 실행하는 컴포넌트이다. Go언어로 개발된 쿠버네티스는 클러스터 안에서 새로운 컨트롤러를 사용할 때 컨트롤러에 해당하는 구조체를 만든다. 그 구조체를 가지고 kube-controller-manager가 관리하는 큐에 넣어서 새로운 컨트롤러를 실행시키는 방식으로 동작한다. 

 

5. cloud-controller-manager

cloud-controller-manager는 kubernetes의 controller들을 cloud service와 연결해 관리하는 component이다.

보통 4가지 controller component를 관리한다.

  • 노드 컨트롤러(Node Controller): cloud service안에서 node를 관리하는 데 사용된다.
  • 라우트 컨트롤러(Route Controller): 각 cloud service안의 network routing을 관리하는 데 사용한다.
  • 서비스 컨트롤러(Service Controller): 각 cloud service에서 제공하는 로드밸런서를 생성, 삭제 갱신하는 데 사용된다.
  • 볼륨 컨트롤러(Volume Controller): cloud service에서 생성한 볼륨을 Node에 연결하거나 mount 등에 사용한다.
Comments