Bluelockr/Virtualbox Rocky Linux 9.2에 Kubernetes Cluster 설치하는 법

Created Thu, 21 Sep 2023 00:00:00 +0000 Modified Tue, 12 May 2026 03:50:56 -0700

쿠버네티스 설치하실 정도면 어느 정도는 기본기가 있으신 분이라고 가정하고 그냥 설명하겠습니다.

⭐Virtualbox에 Rocky Linux 설치

다른 블로그의 글을 참조하시길 바랍니다.

https://mainia.tistory.com/2379
🔼버추얼박스(VirtualBox) 이용해서 우분투(Ubuntu) 설치하기

https://rainbow96bear.tistory.com/entry/Kubernetes-CNI-%EC%84%A4%EC%B9%98-%EB%B0%8F-pod-%EC%83%9D%EC%84%B1-Weave

위 글에 따르면 버추얼박스 가상머신(VM)을 생성할 때 디스크 용량을 넉넉하게 잡아주는 게 좋다고 합니다.
50GB~100GB 정도로 설정해줍니다.

⭐네트워크 설정

저는 호스트 아이피 대역이 192.168.0.0/24라서,
게스트 아이피는 호스트 아이피 대역 내인 192.168.0.10과 20으로 설정했습니다.

💧버추얼박스 자체 네트워크 설정



[NAT Networks]
Name : NatNetwork
IP Prefix : 192.168.0.0/24
Enable DHCP

💧Rocky Linux가 설치된 가상머신(VM) 설정


[어댑터 1]
NAT 네트워크
이름 : NatNetwork

NAT Networks 대신에 ‘어댑터에 브리지’ 옵션을 선택해줘도 됩니다.

💧Rocky Linux 내부의 IP 설정


IPv4 Method : Manual(수동)
IP : 192.168.0.10
SM : 255.255.255.0
GW : 192.168.0.1
DNS : 8.8.8.8

⭐호스트 설정

sudo su

cat <<EOF> /etc/hosts
192.168.0.10 master
192.168.0.20 worker
EOF

hostnamectl set-hostname master

재부팅합니다.

⭐Swap & SELinux & 방화벽 설정

sudo su

sudo swapoff -a && sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo setenforce 0
sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/sysconfig/selinux
sudo systemctl disable firewalld
sudo systemctl stop firewalld

⭐Docker 설치

https://docs.docker.com/engine/install/centos/

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
systemctl enable docker
systemctl start docker

⭐컨테이너 런타임 설정

https://kubernetes.io/docs/setup/production-environment/container-runtimes/

sudo su

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

⭐쿠버네티스 도구 설치

https://pwittrock.github.io/docs/setup/independent/install-kubeadm/

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
        https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm
systemctl enable kubelet && systemctl start kubelet

shutdown now

⭐master 노드 복제

master node VM이 종료되면 master node VM을 복제합니다.

복제할 때 이름은 worker로 해줍니다.

⭐worker 노드 IP, 호스트명 설정


worker node VM을 실행합니다.

IPv4 Method : Manual
IP : 192.168.0.20
SM : 255.255.255.0
GW : 192.168.0.1
DNS : 8.8.8.8

사실 그냥 IP 끝자리만 바꿔준 겁니다. master node와 중복되면 안되니까요.

마찬가지로 호스트명도 중복되면 안 되므로 터미널에서 다음 명령어를 실행해줍니다.

hostnamectl set-hostname worker

그리고 재부팅합니다.

⭐Kubernetes Cluster 설정

💧kubeadmin init

master node VM을 실행합니다.

sudo su
sudo kubeadm init --control-plane-endpoint=master

시간이 오래 걸립니다. 멈춘 거 아니에요ㅋㅋ


🔼귀차니즘 때문에 Ubuntu Kubernetes Cluster 구성 포스팅에 있던 이미지 그대로 갖다 씀(…)

다 끝나면 kubeadm join 어쩌고 하는 내용이 맨 뒤에 나오는데, 이를 복사해줍니다.

cat > token.txt 명령어를 사용해 따로 저장해주면 더욱 좋습니다.

터미널에 다음 명령어를 실행합니다.

exit

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

💧kubeadm join

이제 worker node VM으로 건너갑니다.

sudo su

그리고 터미널에 아까 복사했던 kubeadm join 어쩌고 하는 값을 그대로 붙여넣고 실행합니다.

다시 master node VM로 건너가서,

kubectl get nodes

아직은 not ready 상태입니다.

💧Pod Network Addon 설치

여기에 pod network addon을 설치해주어야 합니다.

https://kubernetes.io/docs/concepts/cluster-administration/addons/#networking-and-network-policy
🔼Pod Network Addon 목록

Calico, Flannel 등이 있으며, 이 중에 하나만 설치해줘도 됩니다.

[Calico]

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml

[Flannel]
https://github.com/flannel-io/flannel#deploying-flannel-manually

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
kubectl get nodes

Alt text

ready 상태로 변환되기까지 시간이 좀 걸립니다. 기다려주세요.