쿠버네티스 클러스터 아키텍처
1. 컨트롤 플레인
- 클러스터의 두뇌 역할을 하며 스케쥴링, 서비스 관리, API 요청 처리 등의 작업을 수행
- 클러스터 내 마스터 노드에서 실행
- 구성 요소
. kube-apiserver: 컨트롤플레인의 frontend 서버로 API 요청을 처리
. etcd: 쿠버네티스 관련 모든 메타데이터 (정보)를 저장하는 DB
. kube-scheduler: 새로 생성된 Pod을 싱행할 노드를 결정
. kube-controller-manager: 리소스 컨트롤러(ex. deployment) 관리
. cloud-controller-manager: 클라우드 업체와 연동하여 로드 밸런서나 디스크 볼륨과 같은 자원 관리
2. 노드 컴포넌트
- 클러스터 내 사용자의 워크로드를 실행
- 도커 데스크톱이나 미니큐브와 같이 클러스터 크기가 매우 작은 경우를 제외하고는 마스터 노드는 일반적으로
사용자 워크로드를 실행하지 않는다.
- 구성 요소
. kubelet: 노드에 예약된 워크로드를 실행하기 위해 컨테이너 런타임을 관리하고 상태 모니터링
. kube-proxy: 서로 다른 노드에 있는 파드 간 통신이나 인터넷 사이의 네트워크 트래픽을 라우팅
. container runtime: 컨테이너 시작 및 중지, 컨테이너 간 통신 처리 (일반적으로는 도커가 사용됨)
3. 고가용성 보장
- 컨트롤 플레인은 다수의 마스터 노드로 구성되어 고가용성을 보장 (상용 클러스터는 최소 3개 마스터 노드 필요)
- 네트워크 파티션 상황 (네트워크 장애로 일부 컴포넌트 간 통신 불가)도 처리 가능
- etcd 데이터베이스는 여러 노드에 걸쳐 복제된다.
- 워커 노드 장애시 해당 노드의 Pods를 다른 노드로 재조정
4. 관리형 쿠버네티스 서비스
- 구글 쿠버네티스 엔진 (GKE) : 클러스터 오토 스케일링 기능 제공, 모든 면에서 최고
- 아마존 일래스틱 쿠버네티스 서비스 (EKS)
- 애저 쿠버네티스 서비스 (AKS)
- 오픈시프트
- IBM 클라우드 쿠버네티스 서비스
5. 쿠버네티스 자체 호스팅
- *kops: 클러스터의 자동 프로비저닝을 위한 명령줄 도구
- *Kubespary: 클러스터를 쉽게 배포하는 도구 (온프레미스 베어 메탈 서버에 쿠버네티스를 설치하는데 중점)
- TK8: 클러스터 프로비저닝을 위해 사용
- kubeadm: 쿠버네티스에서 제공하는 도구 (클러스터 설치 및 관리)
* 적게 실행하는 소프트웨어 (시간을 관리하고 경쟁자를 물리치는 데 도움이 되는 핵심)
1. 표준 기술을 선택하라
2. 차별화되지 않는 고된 일은 아웃소싱하라
3. 지속적인 경쟁 우위를 창출하라