Day 1 - Kubernetes 환경 구축
Day 1 - Kubernetes 환경 구축
목차
1. 환경 구성

Windows 호스트 네트워크
VMware Network Adapter VMnet8 (NAT)
| 항목 | 값 |
|---|---|
| IPv4 주소 | 192.168.5.1 |
| 서브넷 마스크 | 255.255.255.0 |
VMware 가상 네트워크
| 네트워크 | 타입 | 서브넷 | 용도 |
|---|---|---|---|
| VMnet1 | Host-only | 172.100.100.0/24 | 호스트-VM 전용 통신 |
| VMnet8 | NAT | 192.168.5.0/24 | 외부 인터넷 연결 |
VMnet8 DHCP:
| 항목 | 값 |
|---|---|
| DHCP 범위 | 192.168.5.201 ~ 254 |
가상머신 사양
| 항목 | 값 |
|---|---|
| VM 이름 | k8s-master |
| 메모리 | 4GB |
| CPU | 2 Processors |
| 디스크 | 100GB (ext4) |
| OS | Ubuntu Server 24.04 |
| 네트워크 1 | NAT (VMnet8) |
| 네트워크 2 | Host-only (VMnet1) |
Ubuntu 네트워크 설정
| 인터페이스 | 타입 | IP 주소 | 용도 |
|---|---|---|---|
| ens33 | NAT | 192.168.5.11/24 | 외부 인터넷 |
| ens37 | Host-only | 172.100.100.2/24 | 호스트 통신 |
Netplan 설정:
sudo vim /etc/netplan/50-cloud-init.yaml
network:
ethernets:
ens33:
addresses: [192.168.5.11/24]
routes:
- to: default
via: 192.168.5.2
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
ens37:
addresses: [172.100.100.2/24]
version: 2
sudo netplan apply
시스템 설정
# 시간 동기화 활성화
sudo timedatectl set-ntp true
# 상태 확인
timedatectl status
# 동기화 상태 확인
timedatectl timesync-status
# 스왑 비활성화
sudo swapoff -a
2. Docker 설치
커널 설정
# IP 포워딩 활성화
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 모듈 로드
sudo modprobe overlay
sudo modprobe br_netfilter
# 영구 설정
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
# sysctl 설정
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
Docker 엔진 설치
# 필수 패키지
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# Docker GPG 키
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Docker 레포지토리
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
# Docker 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 사용자 그룹 추가
sudo usermod -aG docker $USER
#재시작
sudo reboot
Containerd 설정
# config.toml 생성
sudo sh -c "containerd config default > /etc/containerd/config.toml"
# SystemdCgroup 활성화
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# daemon.json 설정
sudo tee /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {"max-size": "100m"},
"storage-driver": "overlay2"
}
EOF
# 서비스 재시작
sudo systemctl daemon-reload
sudo systemctl enable docker containerd
sudo systemctl restart docker containerd
3. Kubernetes 설치
# 레포지토리 추가
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 패키지 설치
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
# 버전 고정
sudo apt-mark hold kubelet kubeadm kubectl
# 서비스 시작
sudo systemctl daemon-reload
sudo systemctl enable --now kubelet
버전 확인:
kubeadm version # v1.32.x
kubectl version --client
kubelet --version
