virtualbox 를 이용해서 k8s 실습환경을 구성해 봅시다.
사용 버전
VirtualBox-7.0.18-162988-Win
ubuntu-24.04-live-server-amd64 ( CPU: 2Core Memory: 4G Disk: 25GB ) * 3 대
Docker Engine – Community Version: 27.0.3
k8s – 1.30.2
집에서 k8s를 실습 할 수 있는 환경 구축이 목표입니다. 윈도우11 에서 실습했습니다.
1 마스터노드(control plane node) , 2 워커노드입니다.
1. vm 설치 , 네트워크 설정
ubuntu24 설치 후 NAT 네트워크 설정
(호스트에서 vm으로 접속 가능하게 하기 위해 , vm간 연결을 위해, 외부에선 vm으로 접속이 안됩니다.)
vm 별로 설정에서 nat 네트워크 설정
우분투 내부에서 netplan 설정
/etc/netplan/50-cloud-init.yaml 파일 수정
network: ethernets: enp0s3: dhcp4: false addresses: - 10.0.2.11/24 routes: - to: default via: 10.0.2.2 nameservers: addresses: - 168.126.63.1 - 168.126.63.2 version: 2
10.0.2.11/24 부분만 10.0.2.11/24 , 10.0.2.22/24 , 10.0.2.33/24 로 각각 수정해 줍니다
2. 도커 설치
여기에서 1,2,3 수행해주시면 됩니다.
# 1번 # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update #2번 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin #3번 잘 설치 되었는지 확인 sudo docker run hello-world
3. k8s 설치
설치 전 3대 모두 swap을 해제 해줍니다. 방화벽을 해제 해줍니다.
swapon –show 로 swap 확인
swapoff -a 로 swap 종료
/etc/fstab 에서 swap 주석처리
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab systemctl stop ufw systemctl disable ufw
이제 설치 해봅시다.
3-1.
3대 모두 여기에서 Debian-based distributions를 찾고 1,2,3,4 수행해 줍니다.
#1번 sudo apt-get update # apt-transport-https may be a dummy package; if so, you can skip that package sudo apt-get install -y apt-transport-https ca-certificates curl gpg #2번 # If the directory `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below. # sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg #3번 # This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list #4번 sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl
3-2.
완료후 컨테이너 런타임을 설정해 줍니다. containerd 기본 설정입니다.
sudo mkdir -p /etc/containerd sudo containerd config default | sudo tee /etc/containerd/config.toml systemctl restart containerd
3-3.
마스터 노드에서 kubeadm init 하고 대기하면
#일반유저 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config #root 유저 export KUBECONFIG=/etc/kubernetes/admin.conf kubeadm join { 10.0.2.44:6443 } --{ token xxvhng.kfrm3mstvixj7tyd } \ --discovery-token-ca-cert-hash sha256: { 3a4be93930295c9a4119be6139d6463f06451436efb8ea91042bceb4340676d2 }
메세지가 나옵니다. {} 부분이 다르니 확인하세요.
워커노드 2곳에서
kubeadm join 10.0.2.44:6443 --token xxvhng.kfrm3mstvixj7tyd \ --discovery-token-ca-cert-hash sha256:3a4be93930295c9a4119be6139d6463f06451436efb8ea91042bceb4340676d2
명령어를 입력합니다.
마스터노드에서
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
를 실행하고 kubectl 명령어를 사용하면 아마 작동이 안될 겁니다.
3-4.
cni를 설치해 줘야 합니다.
cni의 종류가 여러 개 입니다.
저는 설치가 쉬운 weave를 선택 했습니다. 마스터 노드에서 실행시켜 줍시다
kubectl apply -f https://reweave.azurewebsites.net/k8s/v1.29/net.yaml
kubectl get nodes 로 마스터노드와 워커노드가 잘 있는지 확인해 봅시다.