문서 목차
노드 스케일링
운영 중인 클러스터에 워커 노드를 추가 합니다. 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으로 뜨고, 클러스터 내부 서비스에 정상 접속되면 검증 완료입니다.