기록

K3s 기반 멀티 노드 클러스터 구축기 (2) - dev 계정에서 워커 노드 연결하기 본문

DevOps

K3s 기반 멀티 노드 클러스터 구축기 (2) - dev 계정에서 워커 노드 연결하기

zyin 2025. 4. 14. 12:00

 

시작하면서

이번 글에서는 K3s 마스터 노드가 구성된 상태에서, dev 계정에 위치한 EC2 인스턴스를 워커 노드(Agent)로 연결하는 방법을 설명한다.  이 과정은 클러스터 확장과 cross-account 구조를 이해하는 데 매우 유용하며, 프리티어 환경에서 실습하는 데 최적화되어 있다.

이전글

목표

  • dev 계정에서 EC2 인스턴스를 생성하고 swap, timezone 설정을 마친다.
  • EC2를 K3s agent 모드로 실행하여 master 노드와 연결한다.
  • kubectl get nodes 명령어로 클러스터 확장 여부를 확인한다.

CloudFormation 템플릿 요약

dev 계정에서는 다음 리소스를 CloudFormation 템플릿으로 생성한다:

  • VPC (CIDR: 10.10.0.0/16)
  • 퍼블릭 서브넷 2개 (AZ 2a, 2c)
  • EC2 Launch Template (UserData 포함)
  • Auto Scaling Group (1개 인스턴스 유지)
  • 보안 그룹 (22, 6443 허용)

사용자 데이터(UserData) 예시 (Agent 전용)

deploy된 EC2 인스턴스는 다음과 같은 설정을 자동으로 수행한다:

#!/bin/bash
set -ex

# swap 및 timezone 설정
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
timedatectl set-timezone Asia/Seoul

# K3s Agent 설치
MASTER_PUBLIC_IP=""
K3S_TOKEN=""

curl -sfL https://get.k3s.io | K3S_URL=https://$MASTER_PUBLIC_IP:6443 K3S_TOKEN=$K3S_TOKEN sh -

 

※ <MASTER_PUBLIC_IP>와 <NODE_TOKEN>은 마스터 노드에서 다음 명령으로 확인 가능:

curl ifconfig.me
sudo cat /var/lib/rancher/k3s/server/node-token

연결 확인 (마스터 노드 측)

마스터 노드에서 다음 명령어를 실행하여 agent 노드가 정상적으로 연결되었는지 확인한다:

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes -o wide

정상적으로 연결되면 아래와 같은 출력이 나타난다:

NAME                                            STATUS   ROLES                  AGE   VERSION
ip-10-30-1-10.ap-northeast-2.compute.internal   Ready    control-plane,master   30m   v1.32.3+k3s1
ip-10-10-1-20.ap-northeast-2.compute.internal   Ready    <none>                 2m    v1.32.3+k3s1

 

 
Comments