3.1 클러스터 아키텍처
쿠버네티스는 여러 대의 서버가 하나의 클러스터로 연결되어 있다.
3.1.1 컨트롤 플레인
컨트롤 플레인
클러스터의 두뇌 역할을 하며 컨테이너 스케줄링, 서비스관려, API관리 등의 작업을 수행한다.
kube-apiserver
- 컨트롤 플레인의 프론트엔드 서버로 API 요청을 처리한다.
etcd
- 어떤 노드가 존재하고 클러스터에 어떤 리소스가 존재하는지와 같은 k8s 정보를 저장하는 DB이다.
kube-scheduler
- 새로 생성된 파드를 실행할 노드를 결정한다.
kube-controller-manager
- 디플로이먼트와 같은 리소스 컨트롤러를 관리한다.
cloud-controller-manager
- 클라우드 기반 클러스터는 클라우드업체와 연동하여 로드벨런서나 디스크볼륨 같은 자원을 관리한다.
3.1.2 노드 컴포넌트
워커 노드는 클러스터 내에서 사용자의 워크로드를 실행한다.
"워크로드"란 클러스터 내에서 실행되는 애플리케이션이나 서비스의 특정 인스턴스를 의미하며
pod, deployment, statefulSet 등이 이와 같다.
클러스터 내에서 각 워커 노드는 다음과 같은 컴포넌트를 실행한다.
kubelet
- 노드에 예약된 워크로드를 실행하기 위해 컨테이너 런타임을 관리하고 상태를 모니터링한다.
kube-proxy
- 서로 다른 노드에 있는 파드 간 통신이나, 파드와 인터넷 사이의 네트워크 트래픽을 라우팅한다.
컨테이너 런타임
- 컨테이너를 시작하고 중지하며 컨테이너 간 통신을 처리한다. 일반적으로 도커가 사용된다.
마스터노드 & 워커노드
- 두 노드사이에 기능이나 구조적인 면에서는 본질적인 차이는 없다.
- 마스터 노드는 일반적으로 사용자 워크노드를 실행하지 않는다.
3.1.3 고가용성
컨트롤 플레인은 마스터 노드를 여러 개 두어 고가용성을 보장한다. ( 최소 3개 권장사항)
etcd 데이터베이스는 여러 노드에 걸쳐 복제되므로, 복제본이 절반 이상 사용 가능하면 고가용성을 보장한다.
컨트롤 플레인 장애
사용자의 애플리케이션을 다운시키지는 않지만, 잘못된 작동을 유발 할 수 있다.
모든 마스터 노드가 중지 될 경우, 워커 노드의 파드는 한동안 계속 실행된다.
그러나 새로운 컨테이너를 배포하거나 리소스 변경이 불가하며 디플로이먼트와 같은 컨트롤러는 중지될 것이다.
워커 노드 장애
컨트롤 플레인이 작동하고 있다면 워커 노드의 장애를 감지하고 장애 노드의 파드를 다른 노드로 재조정한다.
워커 노드의 개수가 적을 수록 각 노드가 클러스터 내에서 차지하는 용량 비율이 커진다.
AWS를 사용해 k8s구축하는 경우에는 동일한 AZ(available zone)에 워커 노드를 두는 것보다
2-3개 AZ로 분산시키는 것이 좋다.
'Infra > Kubernetes' 카테고리의 다른 글
쿠버네티스를 활용한 네이티브 데브옵스 - 5장 리소스 관리하기 (0) | 2024.10.05 |
---|---|
쿠버네티스를 활용한 네이티브 데브옵스 - 4장 오브젝트 다루기 (0) | 2024.09.27 |
Kubernetes - minikube 실행 (0) | 2024.09.18 |
Kubernetes - Service와 이를 통한 Ingress (0) | 2023.06.07 |
Kubernetes란? (0) | 2023.05.14 |