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 명령으로 모든 노드가 사용할 수 있는 상태인지 확인한다.
'공부기록 > MLOps | Infra' 카테고리의 다른 글
[k8s] Kubernetes Monitoring Architecture (0) | 2022.08.28 |
---|---|
[k8s] Multiple Schedulers (0) | 2022.08.28 |
[k8s] static pod (0) | 2022.08.27 |
[kubernetes] 쿠버네티스 클러스터를 구성하는 도구 - Kubeadm, Kuberspray (0) | 2022.03.21 |
AWS ec2 Ubuntu 18.04에서 apache2로 django 프로젝트 배포 (0) | 2021.11.28 |