# 02장 쿠버네티스 도구
Assembled by GimunLee
# Kubeadm
- Kubeadm은 쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구
- 여러 대 서버를 쿠버네티스로 손쉽게 구성 가능
- Kubeadm에서 제공하는 클러스터의 고가용성 구조는 여러 대의 마스터 노드를 구성하고, 그 앞에 로드밸런서를 배치시켜, 워커 노드들이 마스터 노드에 접근할 때는 로드밸런서를 거쳐 접근하도록 구현되어 있음
- 마스터 노드 1대에 장애가 발생하더라도 로드 밸런서에서 다른 마스터 노드로 접근할 수 있게 해서 클러스터의 신뢰성 유지
# Kubespray
Kubespray는 상용 서비스에 적합한 보안성과 고가용성이 있는 쿠버네티스 클러스터를 배포하는 오픈소스 프로젝트
Kubespray는 서버 환경 설정 자동화 도구인 앤서블(ansible) 기반으로 개발
설정에 따라 사용자에게 맞는 다양한 형식으로 쿠버네티스 클러스터를 구성할 수 있으므로 온프레미스 환경에서 상용 서비스의 쿠버네티스 클러스터를 구성할 때 유용
ingress-nginx 컨트롤러, 헬름, 볼륨 플러그인 cephfs를 프로비저닝하는 cephfs-provisioner, SSL 인증서를 관리하는 cert-manager 등의 추가 구성 요소를 클러스터에 실행
# Kubespray에서 제공하는 클러스터 고가용성 구조
- Kubeadm처럼 별도의 로드밸런서를 사용하지 않고, 노드 각각의 nginx가 리버스 프록시로 실행
- nginx-proxy가 전체 마스터 노드를 바라보는 구조로 쿠버네티스의 컴포넌트들은 직접 마스터 노드와 통신하지 않고, 자신의 서버 안 nginx와 통신
- 마스터 노드의 장애감지는 헬스 체크(health check)를 이용해 nginx가 알아서 처리
- 쿠버네티스는 **CNI(Container Network Interface)**를 만족하는 다양한 네트워크 플러그인 지원
# 칼리코(calico)
퍼블릭 클라우드 대부분에서 **칼리코(calico)**를 기본 네트워크 플러인으로 사용하며, Kubespray의 기본 설정
BGP(layer 3) 기반 네트워킹을 지원하고, IPinIP 터널링 기능을 옵션으로 사용할 수 있음
클러스터 당 최대 5,000개 노드까지 사용할 수 있으며, 클러스터 규모가 크다면 성능과 안정성을 보장하도록 라우팅 정보 공유를 매개하는 라우터 리플렉터 노드(Route Reflector Node)를 둘 것을 권장
# Referenses
- 쿠버네티스 입문 - 90가지 예제로 배우는 컨테이너 관리 자동화 표준 / 동양북스