
상용 서비스에 적합한 보안성과 고가용성이 있는 쿠버네티스 클러스터를 배포하는 오픈 소스 프로젝트이다.
Kubespray 에서 제공하는 클러스터 고가용성 구조

별도의 로드 밸런서를 사용하지 않고 노드 각각의 nginx가 리버스 프록시로 실행된다. 이 nginx-proxy 가 전체 마스터 노드를 바라보는 구조로 되어 있다. 장점으로는 간단한 설정으로 클러스터 네트워크를 자동으로 구성할 수 있다.
칼리코와 Ubuntu 리눅스 환경에서 실습합니다. cd ~
sudo apt update
git clone -b v2.18.1 https://github.com/kubernetes-sigs/kubespray.git
참고
필자는 버전 확인을 잘못해서 오류가 발생했음.
git clone https://github.com/kubernetes-sigs/kubespray.git으로 설치하면 오류가 발생할 가능성 있음.
cd kubespray
sudo apt update
sudo apt install python3-pip -y
sudo pip3 install -r requirements.txt
mycluster라는 이름의 디렉토리를 생성하고, inventory 디렉토리 아래의 sample 디렉토리를 mycluster 디렉토리에 복사
cp -rpf inventory/sample/ inventory/mycluster
복사가 끝나면 inventory.ini 라는 파일이 생성됨.
vi inventory/mycluster/inventory.ini

해당 형식처럼 본인의 상황에 맞게 편집한다.
[all] : 클러스터로 구성될 서버들의 호스트네임과 IP 를 설정
[kube_control_plane] : 마스터 노드로 사용할 서버의 호스트네임 설정
[etcd] : 쿠버네티스의 클러스터 데이터를 저장하는 etcd 를 설치할 노드의 호스트네임을 설정
[kube_node] : 워커 노드로 사용할 서버의 호스트네임을 설정
[k8s_cluster:children] : 쿠버네티스를 설치할 노드를 설정
nsible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b
필요한 패키지를 설치하고 컨테이너 이미지 등을 다운로드하므로 대략 45분 정도 시간이 걸림.
sudo -i 명령으로 root 계정으로 로그인
이후 kubectl get node로 상태 확인

모든 노드의 STATUS 항목 값이 Ready 라면 정상적으로 완료한 것.