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

노드 스케일링

운영 중인 클러스터에 워커 노드를 추가 합니다. VM 생성부터 OS 부트스트랩(커널 요구사항 자동 충족 포함), 필수 보안 인증서, 컨테이너 런타임/CNI, kubeadm join , Helm/도구 설치까지 전부 자동으로 처리되며, 기존 노드는 건드리지 않습니다.

QUANTUM C&S

운영 중인 클러스터에 워커 노드를 추가합니다. VM 생성부터 OS 부트스트랩(커널 요구사항 자동 충족 포함), 필수 보안 인증서, 컨테이너 런타임/CNI, kubeadm join, Helm/도구 설치까지 전부 자동으로 처리되며, 기존 노드는 건드리지 않습니다.

설정값

terraform/openstack/ubuntu/terraform.tfvars:

qks_kube_worker_num = 3   # 기존 값에서 원하는 만큼 증가

실행

1단계 — VM 추가

cd terraform/openstack/ubuntu
terraform apply

새 워커 VM이 생성되고 inventory/qks/hosts.ubuntu가 자동 갱신됩니다.

2단계 — 클러스터 조인

cd /home/ubuntu/k8s
ansible -i inventory/qks/hosts.ubuntu kube-cluster -m ping
./install.sh ubuntu k8s.yaml

전체 노드를 대상으로 재실행하지만, 이미 구성된 노드들은 각 단계의 상태 확인(예: 커널 버전, /var/lib/kubelet/config.yaml 존재 여부)에 따라 자동으로 건너뛰고, 신규 노드에만 실제 작업이 수행됩니다.

스케일 아웃 흐름 (신규 노드 기준)

1. OS 부트스트랩(qks-bootstrap)
   - 커널이 7.0 미만이면 HWE 패키지 설치 + 재부팅(Ceph aes256k 키 타입 요구사항 자동 충족)
   - swap 비활성화, sysctl, 타임존 등 공통 설정
2. 컨테이너 런타임 설치(qks-kubernetes/cri) — 기존 클러스터와 동일한 kube_cri 값 적용
3. kubeadm join (qks-kubernetes/k8s/worker)
   - /var/lib/kubelet/config.yaml이 이미 있으면 스킵(기존 노드는 여기서 자동 제외됨)
4. 각종 도구 설치(qks-tools) — kubectx, k9s, nerdctl 등

CNI(Cilium/Calico/Flannel)는 컨트롤플레인 초기화 시점에만 설치되는 항목이라 워커 추가 시에는 재실행되지 않습니다 — 새 워커는 조인 즉시 기존 CNI DaemonSet이 자동으로 배치됩니다.

설치 확인

kubectl get nodes -o wide

새 노드가 Ready이고, 기존 노드와 동일한 KERNEL-VERSION/CONTAINER-RUNTIME을 갖는지 확인합니다.

kubectl get pods -A | grep -vE "Running|Completed"

비정상 파드가 없는지(빈 결과) 확인합니다.

실제 동작 확인

새 노드에 실제로 파드가 스케줄되고 네트워킹이 정상 동작하는지 확인합니다:

kubectl run scale-test --image=busybox --restart=Never \
  --overrides='{"spec":{"nodeSelector":{"kubernetes.io/hostname":"<신규노드이름>"}}}' \
  -- sleep 3600
kubectl wait --for=condition=Ready pod/scale-test --timeout=60s
kubectl exec scale-test -- wget -qO- <기존 서비스 ClusterIP 또는 도메인>
kubectl delete pod scale-test

신규 노드의 파드가 Running으로 뜨고, 클러스터 내부 서비스에 정상 접속되면 검증 완료입니다.

다음 단계