
이전 포스팅에서는 EC2에 Docker와 Kubernetes를 설치하고 마스터 노드를 구성하는 과정을 다루었다. 이제 클러스터를 확장하기 위해 워커 노드를 추가하고 Kubernetes 클러스터에 연결하는 과정을 설명한다.
워커 노드를 추가하면 클러스터에서 애플리케이션을 실행할 수 있는 노드가 확장되며, 다중 노드 환경에서의 Kubernetes 동작 방식을 익힐 수 있다.
마스터 노드와 동일하게 Ubuntu 22.04 기반의 EC2 인스턴스를 생성한다.
t3.medium (CPU 2개, RAM 4GB)10250, 10255 (kubelet 및 헬스체크)30000-32767 (NodePort 서비스용)ssh -i <키_파일.pem> ubuntu@<워커노드_퍼블릭_IP>
마스터 노드와 동일하게 Docker를 설치한다.
#!/bin/bash
# 필수 패키지 설치
sudo apt update -y
sudo apt install -y ca-certificates curl gnupg lsb-release
# 기존 Docker 저장소 및 GPG 키 삭제 (오류 방지)
sudo rm -rf /etc/apt/sources.list.d/docker.list
sudo rm -rf /etc/apt/keyrings/docker.gpg
# GPG 키 추가 및 저장소 설정
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker 설치
sudo apt update -y
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Docker 서비스 활성화 및 시작
sudo systemctl enable --now docker
sudo systemctl status docker --no-pager
# 현재 사용자를 Docker 그룹에 추가 (sudo 없이 사용 가능)
sudo usermod -aG docker $USER
# 설치 확인
docker --version && echo "[SUCCESS] Docker 설치 완료! 터미널을 다시 실행하세요."
docker --version
docker run hello-world
✅ hello-world 컨테이너가 실행되면 정상적으로 설치된 것이다.
워커 노드에 kubelet, kubeadm, kubectl을 설치한다.
#!/bin/bash
# 필수 패키지 설치
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
# Kubernetes GPG 키 추가 및 저장소 설정
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo tee /etc/apt/keyrings/kubernetes-apt-keyring.asc > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.asc] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
# Kubernetes 패키지 설치
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 자동 업데이트 방지
# Swap 비활성화
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab
# Containerd 설정
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable --now containerd
✅ 설치 완료 후 kubelet이 자동으로 실행된다.
이제 워커 노드의 준비가 완료되었다. 다음 포스팅에서는 워커 노드를 마스터 노드에 연결하는 과정을 다룬다.