[K8s] Kubespray 설치

심주흔·2024년 7월 24일

Kubernetes

목록 보기
1/3
post-thumbnail

Kubespray 란?

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

kubespray

Kubespray 에서 제공하는 클러스터 고가용성 구조

별도의 로드 밸런서를 사용하지 않고 노드 각각의 nginx가 리버스 프록시로 실행된다. 이 nginx-proxy 가 전체 마스터 노드를 바라보는 구조로 되어 있다. 장점으로는 간단한 설정으로 클러스터 네트워크를 자동으로 구성할 수 있다.

Kubespray 설치

  • 설치하기 전 퍼블릭 클라우드에서 기본 네트워크 플러그인으로 삼는 칼리코Ubuntu 리눅스 환경에서 실습합니다.
  • 3개의 마스터 노드와 2개의 워커 노드로 쿠버네티스 클러스트를 구성한 이후 과정입니다.

홈 디렉터리로 이동

cd ~

우분투의 패키지 매니저를 최신 상태로 업데이트

sudo apt update

원격의 Kubespray Git 저장소를 로컬에 복제(버전확인)

git clone -b v2.18.1 https://github.com/kubernetes-sigs/kubespray.git

참고
필자는 버전 확인을 잘못해서 오류가 발생했음.
git clone https://github.com/kubernetes-sigs/kubespray.git으로 설치하면 오류가 발생할 가능성 있음.

Kubespray 디렉터리로 이동

cd kubespray

pip 파이썬 패키지 매니저 설치

sudo apt update
sudo apt install python3-pip -y

requirements.txt 파일에 정의 된 버전의 패키지 설치

sudo pip3 install -r requirements.txt

Kubespray 설정

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] : 쿠버네티스를 설치할 노드를 설정

playbook 실행

nsible-playbook -i inventory/mycluster/inventory.ini cluster.yml -b

필요한 패키지를 설치하고 컨테이너 이미지 등을 다운로드하므로 대략 45분 정도 시간이 걸림.

root 계정으로 로그인

sudo -i 명령으로 root 계정으로 로그인

이후 kubectl get node로 상태 확인

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

profile
이봐... 해보기는 했어?

0개의 댓글