공부하는 책
알면 더 쉬운 도커 쿠버네티스 복습을 위해 요약한 것.
목표
kubernetes 책 3장 내용 숙지
- 쿠버네티스 아키텍쳐
3.1 쿠버네티스 아키텍쳐
3.1.1 도커, 쿠버네티스 비교
구분 | 설명 |
---|---|
도커 | 컨테이너와 관련된 전반적이고 추상화된 기술을 제공 |
쿠버네티스 | 다량의 컨테이너를 하나의 물리적인 서버에 배치하여 이를 사용하듯이 관리 |
3.1.2 쿠버네티스의 영역은 크게 두가지 영역으로 나뉨
영역 | 설명 |
---|---|
컨트롤 플레인 영역 | 노드를 하나로 묶는 클러스터를 관리 |
노드영역 | 흩어져 있는 각 노드를 관리 |
3.1.3 컨트롤 플레인 컴포넌트 (Control plane component)
- 클러스터에 관한 결정을 내린다.
- 클러스터 이벤트를 감지하며 반응한다.
- 클러스터 내 어떠한 머신에서라도 동작할 수 있다.
쿠버네티스 클러스터의 두뇌 역할을 하며 컨테이너 스케줄링, 서비스 관리, API 요청 처리등의 작업을 수행한다.
컨트롤 플레인에 해당하는 컴포넌트들은 마스터 노드에서 실행된다.
-
kube-apiserver
- 쿠버네티스의 모든 컴포넌트의 통신을 담당
- K8S API를 노출하는 컨트롤 플레인의 프론트엔드
- 수평 확장 가능
-
etcd
- 클러스터의 모든 데이터를 보관하는 일관성, 고가용성을 보장하는 키-값 저장소
- 어떤 노드가 존재하고 클러스터에 어떤 리소스가 존재하는지와 같은 정보
-
kube-scheduler
- 새로운 POD 생성을 감지하고, 실행시킬 워커 노드를 선택하는 역할
-
kube-controller-manager
- 컨트롤러를 구동하는 컴포넌트
- 디플로이먼트 같은 리소스 컨트롤러를 관리
- API 서버를 통해 클러스터의 공유된 상태를 감지하고, 현재 상태를 원하는 상태로 이행하는 컨트롤 루프를 관리
- 구동되는 컨트롤러로 노드 컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러, 서비스 어카운트, 토큰 컨트롤러 등이 있음
-
cloud-controller-manager
- 바탕을 이루는 클라우드 제공 사업자와 상호작용하는 컨트롤러를 작동시킴
- 클러우드 업체와 연동하여 로드 밸런서나 디스크 볼륨 같은 자원을 관리
- cloud-controller-manager 바이너리는 릴리스1.6에 도입된 알파 기능
3.1.4 노드 컴포넌트 (Node component)
POD를 유지시키고 쿠버네티스 런타임 환경을 제공하는 역할을 수행한다.
노드 컴포넌트들은 모든 노드에서 실행될 수 있다.
-
kubelet
- 각 노드에서 실행되는 에이전트
- 컨테이너 런타임을 관리하고 상태를 모니터링
- POD에서 컨테이너가 확실하게 동작하도록 관리
-
kube-proxy
- 각 노드에서 실행되는 네트워크 프록시
- Service 개념의 구현부
- 서로 다른 노드에 있는 POD 간 통신이나 POD와 인터넷 사이의 네트워크 트래픽을 라우팅
-
container-runtime
- 컨테이너를 시작하고, 중지
- 대표적인 것이 Docker
쿠버네티스는 도커, containerd, CRI-O 그리고 Kubernetes CRI(컨테이너 런타임 인터페이스)와 같은 여러 컨테이너 런타임을 지원한다.