본문으로 바로가기

[k8s] 주요 컴포넌트 설명

category Cloud/Kubernetes (k8s) 2021. 7. 5. 15:25
반응형

k8s 클러스터를 관리하는데 필수인 마스터용 컴포넌트, 워커 노드용 컴포넌트, 필수는 아니지만 추가로 사용할 수 있는 애드온(add-on)용 컴포넌트로 구성된다.

 

 

1. 마스터용 컴포넌트

etcd / kube-apiserver / kube-scheduler / kube-controller-manager / cloud-controller-manager 등이 마스터용 컴포넌트이다.

 

1.1 etcd

- 코어OS에서 개발한 고가용성을 제공하는 key-value 저장소

- 분산 시스템에서 노드 사이의 상태를 공유하는 raft 알고리즘을 구현한 것으로 k8s의 모든 데이터를 저장하는 DB 역할 수행

- 서버 하나당 1개 프로세스만 사용 가능

- 꽤 안정적이지만 주기적으로 데이터를 백업하는 것을 권고

 

 

1.2 kube-apiserver

- k8s 클러스터의 API를 사용할 수 있도록 해주는 컴포넌트

- 클러스터로 온 요청에 대한 유효성 검증 (토큰 / 권한)

- k8s에 보내는 모든 요청은 kube-apiserver를 통해 다른 컴포넌트로 전달

- 여러 서버에 여러 kube-apiserver를 실행하여 사용 가능 (ex:work..)

 

 

1.3 kube-scheduler

- Pod를 생성할 노드를 선택해주는 역할

- 조건에 맞는 노드를 찾는 역할 (조건 : 하드웨어 요구사항, 함께 있어야 하는 Pod들을 같은 노드에 실행하는 affinity, 다른 노드로 분산해서 실행해야하는 anti-affinity 만족여부, 특정 데이터가 있는 노드에 할당 등)

 

 

1.4 kube-controller-manager (이해가 잘..)

- Pod들을 관리하는 컨트롤러 존재

- 컨트롤러 각각을 실행하는 컴포넌트 ???

 

 

1.5 cloud-controller-manager

- k8s의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트

- 보통 4가지 컨트롤러 컴포넌트를 관리

노드 컨트률러(Node Controller): 클라우드 서비스 안에서 노드를 관리하는 데 사용

라우트 컨트롤러(Route Controller): 각 클라우드 서비스 안의 네트워크 라우텅을 관리하는데 사용

서비스 컨트롤러(Service Controller):각 클라우드 서비스에서 제공하는 로드밸런서를 생성, 갱신,삭제하는 데 사용

볼륨 컨트롤러(Volume Controller): 클라우드 서비스에서 생성한 볼륨을 노드에 연결하거나마운트하는 등에 사용

 

 

2. 노드용 컴포넌트

k8s 실행 환경을 관리 / 각 노드의 Pod 실행을 관리.. kubelet, kube-proxy, 컨테이너 런타임등이 있음

 

 

2.1 kubelet

- 클러스터 안 모든 노드에서 실행되는 에이전트 / Pod 컨테이너들의 실행을 직접 관리

- Pod Specs 라는 조건이 담긴 설정을 전달받아 컨테이너 실행이 되는지 Health Check 진행

- k8s가 만들지 않은 컨테이너를 관리하지 않음

 

 

2.2 kube-proxy

- 클러스터 안에 별도의 가상 네트워크를 설정하고 관리

- 호스트의 네트워크 규칙을 관리하거나 연결을 전달

 

 

2.3 컨테이너 런타임

- 실제로 컨테이너를 실행시키는 역할 (ex. docker)

 

 

3. 애드온 (Add-on) (추가적인 별도 서비스 패키지와 같은..)

- 안에서 필요한 기능을 실행하는 파드 (예, 네트워킹 애드온, DNS 애드온, 대쉬보드 애드온)

- 네트워킹 애드온 : kube-proxy 외에 직접 다른 네트워킹을 구성할 때 설치 (네트워크 플러그인)

- DNS 애드온 : 클러스터 안에서 동작하는 DNS 서버, k8s안에 실행된 컨테이너들은 자동으로 DNS서버에 등록됨

- 대쉬보드 애드온 : 웹 UI로 k8s를 사용할 수 있습니다. 이 때 대쉬보드를 설치하여 UI를 통해 상태를 파악 할 수 있음

- 컨테이너 자원 모니터링 : cAdivisor라는 컨테이너 모니터링 도구

- 클러스터 로깅 : 클러스터 안 개별 컨테이너의 로그와 쿠버네티스 구성 요소의 로그들을 중앙화한 로그 수집 시스템에 모아서 보는 서비스

클러스터 안 각 노드에 로그를 수집하는 파드를 실행해서 로그 중앙 저장 파드로 로그를 수집

- 로그를 수잽해서 보여주는 애드온 서비스 : ELK (elasticsearch, logstash, kibana) 또는 EFK (elasticsearch, fluentd , kibana)

 

 

 

 

 

 

728x90

'Cloud > Kubernetes (k8s)' 카테고리의 다른 글

[k8s] k8s cluster install guide (설치 가이드)  (0) 2022.04.22
[Container] Podman 설치 및 사용법  (0) 2021.08.24
[Container] Docker 설치 및 사용법  (0) 2021.08.24
[k8s] kubernetes 구조  (0) 2021.07.05
[k8s] 명령어  (0) 2021.07.05