Kubernetes에서의 좌충우돌: Workers 생성

발행: (2026년 5월 10일 AM 10:31 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

Duncan

우리는 처음부터 제어 플레인을 직접 구축했습니다—유용하지만 동시에 어렵습니다. 제어 플레인은 단지 두뇌에 불과하고, 컨테이너화된 애플리케이션을 실행하려면 워커 노드(근육)가 필요합니다. 각 워커를 수동으로 설정하는 것은 악몽과도 같으므로, 이번 시리즈에서는 사전 구성된 머신으로부터 Golden Image를 생성하고 동일한 워커를 빠르게 프로비저닝하는 방법을 보여줍니다.

골든 이미지 만들기

목표는 반복적인 수동 설정을 중단하는 것입니다. 제어 노드를 설정할 때 우리는 다음을 수행했습니다:

  • overlaybr_netfilter 커널 모듈을 로드했습니다.
  • iptables를 위해 네트워크 브리지 설정을 조정했습니다.
  • 스와프를 비활성화했습니다 (kubelet에 필요).
  • containerd를 설치하고 systemd를 cgroup 드라이버로 설정했습니다.

이러한 모든 전제 조건—OS 튜닝 및 쿠버네티스 바이너리(kubeadm, kubelet, kubectl)—는 k8s-seed VM에 포함되어 있습니다. Golden Image는 그 완벽한 설정을 고정한 스냅샷으로, 자동화된 이미지 기반 프로비저닝을 가능하게 합니다.

단계 1: 시드 인스턴스 일반화

템플릿으로 k8s-seed를 사용하기 전에 고유 식별자를 정리하여 각 새로운 VM이 자체 ID를 갖도록 해야 합니다.

  1. 시드 머신에 SSH 접속

    gcloud compute ssh k8s-seed --zone=us-central1-a
  2. 고유 식별자 정리

    sudo cloud-init clean --seed --logs --machine-id
    exit
  3. 인스턴스 중지 (로컬 머신에서 실행)

    gcloud compute instances stop k8s-seed --zone=us-central1-a

단계 2: 사용자 정의 이미지 만들기

중지된 시드 디스크에서 Google Compute Engine 이미지를 생성합니다.

gcloud compute images create k8s-node-image-v1 \
  --source-disk=k8s-seed \
  --source-disk-zone=us-central1-a \
  --family=k8s-node-family

--family 플래그를 사용하면 나중에 이미지의 “최신” 버전을 참조할 수 있습니다.

단계 3: 워커 노드 프로비저닝

골든 이미지를 사용하여 새 워커를 즉시 시작합니다.

gcloud compute instances create worker-1 \
  --zone=us-central1-a \
  --image-family=k8s-node-family \
  --tags=k8s-worker

gcloud compute instances create worker-2 \
  --zone=us-central1-a \
  --image-family=k8s-node-family \
  --tags=k8s-worker

4단계: 클러스터 조인

워커는 kubeadm join을 사용하여 컨트롤 플레인에 등록해야 합니다.

  1. 조인 명령 찾기 (kubeadm init을 컨트롤 노드에서 저장한 명령):

    kubeadm join 10.128.0.x:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
  2. 각 워커에서 명령 실행 (worker-1 예시):

    gcloud compute ssh worker-1 --zone=us-central1-a
    sudo kubeadm join 10.128.0.x:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    exit

    worker-2에 대해서도 동일한 단계를 반복합니다.

  3. 노드 확인

    kubectl get nodes

    두 워커 모두 Ready 상태로 표시되어야 합니다.

워커 2: 동일한 단계 반복

gcloud compute ssh worker-2 --zone=us-central1-a
sudo kubeadm join ...   # 여기에서 명령을 붙여넣으세요
exit

Step 5: 클러스터 검증

제어 플레인에서 모든 노드가 등록되었는지 확인합니다.

kubectl get nodes

예상 출력:

NAME            STATUS   ROLES           AGE   VERSION
control-plane   Ready    control-plane   10m   v1.35.0
worker-1        Ready    <none>          2m    v1.35.0
worker-2        Ready    <none>          1m    v1.35.0

쉬운 방법 (GKE)

Google Kubernetes Engine을 사용했다면, 전체 과정을 단일 명령어로 대체할 수 있습니다:

gcloud container clusters create k8s-easy-cluster \
  --zone us-central1-a \
  --num-nodes 3 \
  --machine-type e2-medium

What’s Next?

Your multi‑node cluster is up, but it’s still static. If a worker crashes, you must manually replace it, and scaling requires manual provisioning and kubeadm join. Future posts may cover automating node lifecycle and scaling to achieve a truly cloud‑native, resilient cluster.

Go Deeper

0 조회
Back to Blog

관련 글

더 보기 »