메뉴 닫기

virtualbox를 이용하여 k8s 구성하기

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 에서 실습했습니다.

k8s1 마스터노드(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 로 마스터노드와 워커노드가 잘 있는지 확인해 봅시다.

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x