클러스터 구축, 튜닝, 문제 해결 같은 내용은 "매니징 쿠버네티스" 읽기
쿠버네티스는 여러개의 클러스터로 연결됨
Control Plain(컨트롤 플레인)은 컨테이너 스케쥴링, 서비스 관리, API 처리 등을 한다
컨트로 플레인은 클러스터내 마스터 노드에서 실행된다.
워커 노드는 클러스터 안에서 사용자의 워크로드를 실행
클러스터 크기가 매우 작지 않으면 마스터 노드는 워크로드를 실행하지 않는다.
쿠버네티스는 고가용성을 지원한다.
고가용성(High Availability) : 시스템이 절대로 뻗지 않는다는 뜻. 시간대비 장애시간으로 측정하는데 (예로 100분 중에 1분 장애나면 99%) 1년중에 5분 15초내의 장애시간을 가지면 5 Nines (99.999%)로 고가용성의 기준점이다.
고가용성을 지원하기에
- 마스터 노드가 장애나도 (reboot을 해도)
- 컨트롤 플레인이 중지되도
- 네트워크 장애로 노드끼리 통신을 못해도 처리됨
- etcd replica의 절반 이상이 사용 가능하면 etcd 노드 장애도 고가용성을 보장
컨트롤 플레인에 장애나면 오동작을 할 수 있기에 정족수(quorum)를 유지할 수 있는 충분한 마스터 노드가 필요하다. 상용은 최소 3개다.
워커 노드는 장애나도 된다
고가용성과 보안등을 자기가 하기 힘드니 자체 호스팅을 하지 말고 그냥 관리형 서비스를 사서(임대해서) 한다.
추천하는 제품
- Google Kubernetes Engine(구글 쿠버네티스 엔진). 줄여서 GKE 저자는 이거 추천. 가격, 성능에서 제일 낫다고 한다
- Elastic Kubernetes Service(아마존 엘라스틱 쿠버네티스 서비스). 줄여서 EKS
- Azure Kubernetes Service(MS 애저 쿠버네티스 서비스). 줄여서 AKS
- 그 외 기타등등..
Run less software 철학
- 표준 기술을 채택
- 차별화되지 않은 일은 아웃소싱
- 지속적인 경쟁 우위 선점
이 중 "차별화되지 않은 일"이란 것은 소프트웨어 설치, 관리, 인프라 유지 등이다. 이런 것에 노력하느니 업체나 서비스를 쓰라는 소리 == GKE 써라
클러스터 없는 컨테이너 서비스 == Clusterless (클러스터리스)
내부적으로 클러스터가 동작하지만 접근할 수가 없음. 더 자동화된 서비스
- Amazon Fargate
- Azure Container Instance
이번 장은 돈내고 GKE 써라! 이게 끝인듯. 갑자기 밑도 끝도 없이 컨트롤 플레인, 워커노드가 뭔지도 제대로 모르는데 장애에 대한 이야기를 하더니 결론은 GKE 써라로 끝나서 조금 당혹스럽다.