EC2에 Docker와 Kubernetes 설치(워커 노드 구성)

y001·2025년 3월 15일
0
post-thumbnail

1. 시작하면서

이전 포스팅에서는 EC2에 Docker와 Kubernetes를 설치하고 마스터 노드를 구성하는 과정을 다루었다. 이제 클러스터를 확장하기 위해 워커 노드를 추가하고 Kubernetes 클러스터에 연결하는 과정을 설명한다.

워커 노드를 추가하면 클러스터에서 애플리케이션을 실행할 수 있는 노드가 확장되며, 다중 노드 환경에서의 Kubernetes 동작 방식을 익힐 수 있다.


2. 워커 노드 EC2 인스턴스 생성

마스터 노드와 동일하게 Ubuntu 22.04 기반의 EC2 인스턴스를 생성한다.

2.1 EC2 인스턴스 스펙

  • Instance Type: t3.medium (CPU 2개, RAM 4GB)
  • Storage: 30GB
  • OS: Ubuntu 22.04
  • 보안 그룹 설정
    • SSH(22) 포트 열기: 내 IP로 제한
    • Kubernetes 노드 간 통신 포트 오픈
      • 10250, 10255 (kubelet 및 헬스체크)
      • 30000-32767 (NodePort 서비스용)

2.2 SSH로 EC2 접속

ssh -i <키_파일.pem> ubuntu@<워커노드_퍼블릭_IP>

3. 워커 노드에 Docker 설치

마스터 노드와 동일하게 Docker를 설치한다.

3.1 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 설치 완료! 터미널을 다시 실행하세요."

3.2 설치 확인

docker --version
docker run hello-world

hello-world 컨테이너가 실행되면 정상적으로 설치된 것이다.


4. Kubernetes 설치

워커 노드에 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이 자동으로 실행된다.


5. 마무리

이제 워커 노드의 준비가 완료되었다. 다음 포스팅에서는 워커 노드를 마스터 노드에 연결하는 과정을 다룬다.

0개의 댓글