[kubernetes] 기초 개념 및 주요 컴포넌트

쿠버네티스 컴포넌트는 세 가지로 구분된다.
클러스터 관리용 Master용 컴포넌트, Node용 컴포넌트, 필수는 아니지만 선택적으로 추가할 수 있는 애드온 컴포넌트
1. Master용 컴포넌트
- etcd
- key - value 타입의 저장소
- etcd는 서버 하나 당 프로세스 1개만 구성할 수 있음
- 일반적으로 etcd 자체를 클러스터링 한 후 여러 개 마스터 서버에 분산해서 실행하여 데이터의 안정성을 보장하도록 구성한다.
쿠버네티스를 더 안정적으로 운영하려면 etcd 데이터를 주기적으로 백업한다
- kube-apiserver
- 쿠버네티스 클러스터의 API 컴포넌트
- 클러스터로 온 요청이 유효한지 검증 후 실행한다
- 여러 마스터 서버에 여러 개의 apiserver를 확장하여 사용할 수 있음
- kube-scheduler
- 현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞는 노드를 선택해 새로운 파드를 생성한다
- kube-controller
- 쿠버네티스 파드들을 관리하는 컨트롤러 컴포넌트
2. Node용 컴포넌트
- kubelet
- 클러스터 안 모든 노드에서 실행되는 에이전트 컴포넌트
- 파드 컨테이너들의 실행을 직접 관리
- 파드스펙이라는 조건이 담긴 설정을 전달받아서 컨테이너를 실행하고, 정상적으로 실행하는지 상태체크를 한다.
- kube-proxy
- 가상 네트워크의 동작을 관리하는 컴포넌트
- 클러스터 안에 별도의 가상 네트워크를 설정하고 관리한다.
- 호스트의 네트워크 규칙을 관리하거나 연결을 전달할 수 있음
- 컨테이너 런타임
- 실제로 컨테이너를 실행시키는 컴포넌트
- 일반적으로 많이 알려진 도커, containerd, runc 같은 런타임을 지원한다
3. 애드온 컴포넌트
- network 애드온
- dns 애드온
- 대시보드 애드온
- 컨테이너 자원 모니터링
- 클러스터 로깅