본문 바로가기
문서 목차
ORKESTRIX설치

노드 프로비저닝 (VM 생성)

Kubernetes를 설치하기 전에 대상 서버(노드)가 준비되어 있어야 합니다. 이미 준비된 베어메탈/가상 서버가 있다면 이 단계를 건너뛰어도 되지만, OpenStack 환경이라면 Terraform으로 VM 생성부터 자동화할 수 있습니다.

QUANTUM C&S

Kubernetes를 설치하기 전에 대상 서버(노드)가 준비되어 있어야 합니다. 이미 준비된 베어메탈/가상 서버가 있다면 이 단계를 건너뛰어도 되지만, OpenStack 환경이라면 Terraform으로 VM 생성부터 자동화할 수 있습니다.

Terraform 설정

Terraform 코드는 terraform/openstack/<사이트이름>/에 있습니다(ubuntu/redhat/oracle 중 OS에 맞는 것). 해당 디렉토리로 이동합니다.

cd terraform/openstack/ubuntu

같은 디렉토리의 terraform.tfvars 파일에 이미 예시 값이 채워져 있습니다. 편집기로 열어서 환경에 맞게 값을 수정합니다(새로 만드는 파일이 아니라 기존 파일을 수정하는 것입니다).

qks_cluster_name
서버 이름의 접두어입니다. ubuntu24로 지정하면 노드 이름이 k8s-ubuntu24-m01, k8s-ubuntu24-w01 형태로 만들어집니다.
qks_kube_node_keypair
OpenStack에 등록된 SSH 키페어 이름입니다. 이 키페어의 개인키가 배포 서버의 ~/qks.pem과 일치해야 합니다.
qks_kube_node_image_id
사용할 OS 이미지의 OpenStack 이미지 ID입니다. 파일 안 주석에 Ubuntu 20.04/22.04/24.04의 이미지 ID가 예시로 적혀 있습니다.
qks_kube_master_flavor / qks_kube_worker_flavor
마스터/워커 노드의 인스턴스 사양(flavor) ID입니다. 파일 안 주석에 vCPU/메모리 조합별 flavor ID 목록이 있습니다.
qks_kube_master_num / qks_kube_worker_num
생성할 마스터/워커 노드 대수입니다. 마스터는 고가용성을 위해 3 이상의 홀수를 권장합니다.

CI/CD, GPU, NFS, Ceph 전용 노드도 같은 방식(qks_kube_<역할>_flavor, _num, _volume_type)으로 설정합니다. 해당 역할이 필요 없으면 _num을 0으로 둡니다(기본값).

inventory_file 값은 VM 생성 후 접속 정보가 자동으로 기록될 인벤토리 파일 경로입니다. 기본값을 그대로 두면 inventory/qks/hosts.<사이트이름>에 생성됩니다.

VM 생성 — Terraform 직접 실행

같은 디렉토리(terraform/openstack/ubuntu)에서 실행합니다.

terraform init                    # 최초 1회만 필요
terraform plan                    # 생성될 리소스 미리 확인 (선택)
terraform apply

terraform.tfvars라는 이름의 파일은 Terraform이 자동으로 읽으므로 별도 옵션을 줄 필요가 없습니다. apply 확인 프롬프트에 yes를 입력하면 VM이 생성되고, 완료 후 inventory_file에 지정한 경로(예: inventory/qks/hosts.ubuntu)에 서버 목록이 자동으로 기록됩니다.

인벤토리 파일은 terraform apply를 실행할 때마다 자동으로 덮어써집니다. 인벤토리 파일을 직접 수정한 내용이 있다면 다음 실행 시 사라지니 주의하세요.

VM 생성 — install.sh로 실행 (동일 작업의 단축 명령)

저장소 루트의 install.sh는 위 Terraform 명령과 뒤이어 나올 Ansible 설치 명령을 한 번에 실행할 수 있게 감싸놓은 스크립트입니다. 문법은 다음과 같습니다.

./install.sh <사이트이름> <동작>

<동작> 자리에 무엇을 넣느냐에 따라 동작이 달라집니다.

vm
위에서 설명한 terraform apply만 실행합니다. VM만 만들고 Kubernetes는 설치하지 않습니다.
all
terraform apply로 VM을 만든 뒤, 이어서 all.yaml 플레이북(전체 스택)까지 한 번에 설치합니다.
그 외 (플레이북 파일명)
예: k8s.yaml, iaas.yaml. Terraform은 건너뛰고, 이미 만들어진 VM에 해당 플레이북만 실행합니다. 다음 문서(Kubernetes 설치)에서 사용하는 방식입니다.

지금 단계(VM만 생성)에서는 저장소 루트로 돌아가 아래처럼 실행하면 됩니다. 위 Terraform 3단계 명령과 결과가 동일합니다.

cd /home/ubuntu/k8s
./install.sh ubuntu vm

생성 확인

cat inventory/qks/hosts.ubuntu
ansible -i inventory/qks/hosts.ubuntu kube-cluster -m ping

설정한 대수만큼 서버가 보이고 전부 "pong" 응답이 오면 준비가 끝난 것입니다. 이어서 Kubernetes 설치를 진행합니다.

리소스 정리

클러스터를 완전히 삭제하려면 VM 자체를 지웁니다.

cd terraform/openstack/ubuntu && terraform destroy   # 직접 실행
# 또는 저장소 루트에서
./uninstall.sh ubuntu all                             # 단축 명령
되돌릴 수 없는 작업입니다. VM과 그에 연결된 볼륨이 모두 삭제됩니다.

다음 단계