가상 머신 3대에 쿠버네티스 환경을 구축해보자.
MN: 마스터 노드
SN01, SN02: 워커 노드
▶ 쿠버네티스 설치 준비
쿠버네티스를 설치하기에 앞서 모든 노드(마스터&워커)에 아래의 사전 작업을 수행해야한다.
- swap 비활성화
# swap 임시 비활성화
sudo swapoff -a
# swap 영구 비활성화
sudo sed -i '/swap/s/^/#/' /etc/fstab
# swap 비활성화 확인 (출력값 없음)
sudo swapon -s
- 방화벽 비활성화
# 방화벽 비활성화
sudo ufw disable
# 비활성화 확인 -> Status: inactive 출력
sudo ufw status
- /etc/hosts 수정
- ifconfig로 노드 ip 확인 후 진행
- sudo vim /etc/hosts
- 필수 패키지 설치
sudo apt update && sudo apt install -y apt-transport-https curl
▶ Docker 설치
Docker 설치 방법은 아래 페이지에서 확인할 수 있으며 apt repository를 사용해 설치를 진행했다.
https://docs.docker.com/engine/install/ubuntu/
# 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
# Install Docker package
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 이미지를 실행하여 설치 확인
sudo docker run hello-world
▶ 쿠버네티스 설치
이제 쿠버네티스 설치를 진행해보자. 설치 방법은 아래 페이지에서 확인할 수 있다.
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
※ 마스터 & 워커 노드 모두 설치
# Update the package list and Install required packages
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
# Add Kubernetes GPG key
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# Add Kubernetes repository
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
# Update package list again
sudo apt-get update
# Install Kubernetes components
sudo apt-get install -y kubelet kubeadm kubectl
# Prevent automatic updates
sudo apt-mark hold kubelet kubeadm kubectl
▶ 쿠버네티스 init (마스터 노드에서만)
모든 노드에 쿠버네티스 설치를 진행한 후, 마스터 노드에서 아래 명령어를 입력해 쿠버네티스 초기화를 수행해보자.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
오류 1: [ERROR CRI]: container runtime is not running
해결 방안:
sudo rm /etc/containerd/config.toml sudo systemctl restart containerd
오류 2: [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]
해결 방안:
sudo su modprobe br_netfilter echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
초기화에 성공하면 아래 사진과 같은 출력이 나온다.
여기서 root가 아닌 계정에서도 kubectl 명령어를 사용할 수 있게 mkdir -p $HOME/.kube 부터 3줄의 명령어를 입력해준다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
▶ 쿠버네티스 join (워커 노드에서만)
위의 사진의 마지막 줄에 kubeadm join 192.168. ~~~ 명령어가 출력되는데 이를 복사하여 모든 워커노드에 입력한다.
입력 후, 마스터 노드에서 kubectl get nodes 명령어를 사용하면 join 된 것을 확인할 수 있다.
그러나, CNI 플러그인을 설치하지 않았기 때문에 모든 노드가 NotReady 상태이다.
kubectl get pods -A 명령어를 입력하면 coredns 파드가 Pending 상태인 것을 확인할 수 있다.
▶ Calico 설치 (마스터 노드에서만)
칼리코 설치 방법은 아래 페이지에서 확인할 수 있다.
https://docs.tigera.io/calico/3.28/getting-started/kubernetes/quickstart
# Install Calico
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.2/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.2/manifests/custom-resources.yaml
명령어를 실행하면 calico pod들이 생성되고, 모든 노드의 상태가 Ready로 바뀐 것을 확인할 수 있다.
'취업 > 프로젝트' 카테고리의 다른 글
쿠버네티스 대시보드 배포하기 / 2025.01.24 (0) | 2025.01.24 |
---|---|
SSH로 가상 머신(VM)에 원격 접속 하기 / 2025.01.21 (0) | 2025.01.21 |
VMWare로 가상 머신 환경 구축하기 / 2025.01.20 (0) | 2025.01.20 |