본문 바로가기

공부기록/MLOps | Infra

[kubernetes] 쿠버네티스 설치 - Kubespray 사용하기

반응형

Kubespray 사용

GCP를 사용하여 실습 환경을 구성하였다. VM인스턴스를 만든다.

Compute Engine에 접속하여 VM인스턴스를 누른 후 [인스턴스 만들기]를 선택해 가상머신 인스턴스 5개를 만든다.

3개는 마스터로 사용하고, 2개는 워크노드로 사용하기 위함이다. 가용성을 위해 마스터노드를 보통 3개 정도 사용한다고한다.

 

 

1. SSH 키 생성과 배포

- 마스터 노드인 instance - 1 서버에서 다른 원격 접속(SSH)이 가능하도록 설정

인스턴스 목록에서 <SSH>를 누르면 해당 서버에 SSH로 접속할 수 있다.

 

 

RSA방식으로 암호화 키를 만들겠다는 옵션을 주면서 SSH키를 생성하는 명령어는 다음과 같다.

 

ssh-keygen -t rsa

 

 

ls -al .ssh/

 

 

.ssh 디렉터리 안에 id_rsa.pub 파일이 생성된 것을 확인할 수 있다. 해당 파일을 열어 키 내용을 복사해놓는다.

 

Compute Engine 메타데이터에 SSH키를 저장해놓는다.

 

 

이제 instance-1에서 나머지 4개의 서버에 호스트네임으로 원격 명령을 실행한다.

 

 

2. Kubespray 설치

sudo apt update #  우분투 패키지 매니저를 최신 상태로  
sudo apt -y install python-pip
pip --version # pip 버전 확인
git clone https://github.com/kubernetes-sigs/kubespray.git

 

Kubespray를 클론한 후 2.16.0 버전을 체크아웃한다.

Kubespray에서 필요로 하는 패키지를 설치한다.

cd kubespray/
git status
git checkout -b v2.16.0

sudo pip3 install -r requirement.txt

 

ansible 버전 확인. 아래와 같이 나오면 제대로 설치된 것.

 

 

3. Kubespray 설정

inventory/sample 디렉토리에 있는 기본 템플릿을 사용해 mycluster 설정에 사용한다.

 

cp -rfp inventory/sample inventory/mycluster

 

inventory.ini 파일에 설치 대상 서버들의 정보를 설정한다.

inventory.ini 파일을 열어서

- kube_control_plane : 마스터 노드로 사용할 서버의 호스트네임을 설정한다. 

- etcd : 쿠버네티스의 클러스터 데이터를 저장하는 etcd를 설치할 노드의 호스트 네임을 설정한다.

- kube_node : 워커 노드로 사용할 서버의 호스트 네임을 설정

- k8s_cluster:children : 쿠버네티스를 설치할 노드들을 설정한다.

 

4. 클러스터 구성

그럼 이제 클러스터 구성 명령을 실행시켜보자.

ansible-playbook -i inventory/mycluster/inventory.ini -v --become --become-user=root cluster.yml

 

 

failed=0이 표시되면 실패 없이 정상적으로 구성된 것이다.

 

이제 root계정으로 kubectl get node 명령으로 모든 노드가 사용할 수 있는 상태인지 확인한다.

 

반응형