1. 쿠버네티스 클러스터 전체 구조
쿠버네티스 클러스터 구성은 크게 마스터와 노드로 구성
마스터
- 클러스터 관리
- 주요 컴포넌트: etcd, kube-apiserver, kube-scheduler, kube-controller-manager
노드
- 컨테이너 실행
- 주요 컴포넌트: kubelet, kube-proxy, docker
Info Notice: kubelet, kube-proxy, docker 는 마스터 구성 컴포넌트에도 포함될 수 있음
2. 쿠버네티스 주요 컴포넌트
쿠버네티스 컴포넌트는 크게 세가지로 구분
- 마스터용 컴포넌트
- 노드용 컴포넌트
- addon용 컴포넌트
2.1 마스터용 컴포넌트
etcd
- key-value 저장소
- 쿠버네티스 필요 데이터 저장(데이터베이스 역할)
kube-apiserver
- 쿠버네티스에 보내는 모든 요청을 다른 컴포넌트에 전달
- 요청에 대해 유효성 검증(권한, api 스펙)
kube-scheduler
- 자원 할당이 가능한 노드에 파드 실행
- 파드의 조건에 맞는 노드 선택(affinity, anti-affinity, HW 요구사항)
kube-controller-manager
- 파드 관리 컨트롤러
cloud-controller-manager
- 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리
content | description |
---|---|
Node Controller | 클라우드 서비스 안에서 노드 관리 |
Route Controller | 클라우드 서비스 안에서 네트워크 라우딩 관리 |
Service Controller | 클라우드 서비스 안에서 로드밸런서 관리 |
Volume Controller | 클라우드 서비스 안에서 볼륨을 노드에 연결/마운트 관리 |
2.2 노드용 컴포넌트
kubelet
- 파드 컨테이너들의 실행을 직접 관리
- PodSpecs 조건에 따라 파드 실행
- 컨테이너 헬스 체크 진행
kube-proxy
- 클러스터 안에 별도의 가상 네트워크 설정
컨테이너 런타임
- 컨테이너 실행 컴포넌트
- docker
- containerd
- runc
2.3 애드온용 컴포넌트
클러스터 안에서 부가적인 기능을 실행하는 파드
네트워킹 애드온
- kube-proxy 외에 클러스터 안에서 가상 네트워크 구성에 사용
- 프라넬, 칼리코, 캐널, 위브넷 등
DNS 애드온
- 클러스터 안에서 동작하는 DNS 서버
- kube-dns, CoreDNS
대시보드 애드온
- 웹 UI로 쿠버네티스를 사용할 수 있도록 하는 기능 제공
컨테이너 자원 모니터링
- CPU, 메모리 사용량 등 모니터링 제공
- kubelet에 포함된 cAdvisor
클러스터 로깅
- 컨테이너 개별 로그와 쿠버네트스 구성 요소 로그를 중앙화
- ELK(ElasticSearch Logstash Kibana)
- EFK (ElasticSearch Fluentd Kibana)
3. 오브젝트와 컨트롤러
쿠버네티스는 오브젝트와 이를 관리하는 컨트롤러라는 개념이 존재. 사용자가 desire state를 탬플릿 등으로 정의하면 컨트롤러는 desire state와 현재 상태가 일치하도록 오브젝트를 생성/삭제함
- 오브젝트: 파드, 서비스, 볼륨, 네임스페이스 등
- 컨트롤러: 레플리카세트, 디플로이먼트, 스테이트풀세트, 데몬세트, 잡 등
댓글남기기