-
컴포넌트 종류와 구성 및 애드온K8s 2025. 7. 14. 19:58
쿠버네티스 아키텍쳐

1. 컨트롤 플레인용 컴포넌트
1) etcd
쿠버네티스에서 필요한 모든 데이터를 저장하는 데이터베이스 역할을 한다.
쿠버네티스 클러스터 구성을 유지하는 분산 키 밸류 스토어(KVS)로 데이터를 key-value 형태로 저장.
서버 하나당 프로세스 1개만 사용할 수 있다.
안정적으로 쿠버네티스를 운영하려면 주기적으로 etcd에 있는 데이터를 백업하는 것이 권장된다.
2) kube-apiserver쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트.
클러스터로 들어온 요청이 유효한지 검증한다.
쿠버네티스는 마이크로 아키텍쳐이므로 서로 분리된 컴포넌트 여러 개로 구성되어 있다.
쿠버네티스에 보내는 모든 요청은 kube-apiserver를 이용해 다른 컴포넌트로 전달한다.
3) kube-scheduler
현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새롭게 만든 파드를 실행한다.
파드는 처음 실행할 때 여러 가지 조건을 설정하며 kube-scheduler가 조건에 맞는 노드를 찾는다.
조건에는 하드웨어 요구 사항, 함께 있어야하는 파드들을 같은 노드에 실행하는 어피니티와 파드를 다양한 노드로 분산해서 실행하는 안티 어피니티 만족 여부, 특정 데이터가 있는 노드에 할당 등이 있다.
파드를 실행할 노드 보장.
4) kube-controller-manager
쿠버네티스는 파드들을 관리하는 컨트롤러가 있다. 컨트롤러 각각은 논리적으로 개별 프로세스지만 복잡도를 줄이려고 모든 컨트롤러를 바이너리 파일 하나로 컴파일해 단일 프로세스로 실행된다.kube-controller-manager는 컨트롤러를 각각 실행하는 컴포넌트이다.
클러스터 안에서 새로운 컨트롤러를 사용할 때는 컨트롤러에 해당하는 구조체를 만들고 kube-controller-manager가 관리하는 큐에 넣어서 실행하는 방식으로 동작한다. 파드를 관찰하며 개수 보장.
5) cloud-controller-manager
쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트이다.2. 노드용 컴포넌트
1) kubelet
클러스터 안 모든 노드에서 실행되는 에이전트로 파드 컨테이너들의 실행을 직접 관리한다. 데몬형태로 동작.
kubelet은 파드 스펙이라는 조건이 담긴 설정을 전달받아서 컨테이너를 실행하고 컨테이너가 정상적으로 실행되는 지 헬스 체크를 진행한다. 단 노드안에 있는 컨테이너라도 쿠버네티스가 만들지 않는 컨테이너는 관리하지 않는다.
2) kube-proxy
쿠버네티스는 클러스터 안에 별도의 가상 네트워크를 설정하고 관리한다.
kube-proxy는 이런 가상 네트워크의 동작을 관리하는 컴포넌트이다. 호스트의 네트워크 규칙을 관리하거나 연결을 전달할 수 있다.
k8s의 network 동작을 관리, iptables rule을 구성.
3) 컨테이너 런타임
실제로 컨테이너를 실행하는 엔진. 도커, containerd, runc 등이 있다.3. 애드온
- 네트워크 애드온 : CNI - Weave Net, Calico, Flannel, Kube-Router
- DNS 애드온 : Core DNS
- 대시보드 애드온
- 컨테이너 자원 모니터링 : cAdvisor
- 클러스터 로깅
- 컨테이너 로그, k8s 운영 로그들을 수집해서 중앙화
- ELK(ElasticSearch, Logstash, Kibana), EFK(ElasticSearch, Fluentd, Kibana), DataDog
참고
따배쿠
쿠버네티스 입문
'K8s' 카테고리의 다른 글
namespace (0) 2025.07.15 Pod (0) 2025.07.10 쿠버네티스 설치(kubeadm) (2) 2025.07.08 쿠버네티스 설치를 위한 설정 1 (0) 2025.07.08 쿠버네티스 설치를 위한 설정 2 (0) 2025.07.04