쿠버네티스를 오픈스택과 같은 클라우드 플랫폼 없이 베어메탈 환경에서 구성하는 방법은 다음과 같습니다.
1. 서버 준비
쿠버네티스를 구성할 베어메탈 서버를 준비해야 합니다.
- 마스터 노드: 1개 이상
- 워커 노드: 1개 이상
- 운영체제: Ubuntu 22.04 / CentOS 8 / Rocky Linux 9 등
2. 네트워크 및 시스템 설정
- 고정 IP 할당 (마스터 & 워커 노드)
- 방화벽 설정: 필요한 포트 오픈 (6443, 2379-2380, 10250-10255 등)
- 스왑 비활성화
sudo swapoff -a echo 'vm.swappiness=0' | sudo tee -a /etc/sysctl.conf
3. 필수 패키지 설치
쿠버네티스 구성에 필요한 패키지를 설치합니다.
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update && sudo apt install -y docker-ce
Docker가 아닌 containerd를 사용할 경우:
sudo apt install -y containerd
설정 변경 후 재시작:
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo systemctl restart containerd
4. Kubernetes 설치
쿠버네티스 패키지 (kubeadm, kubelet, kubectl) 설치:
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update && sudo apt install -y kubeadm kubelet kubectl
sudo systemctl enable --now kubelet
5. 마스터 노드 초기화
마스터 노드를 초기화합니다.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
성공하면 kubeadm join 명령어가 출력됩니다. (워커 노드에서 사용)
클러스터를 사용하려면:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
6. CNI 플러그인 설치 (네트워크 구성)
Flannel 설치:
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
7. 워커 노드 추가
각 워커 노드에서 마스터 노드의 kubeadm join 명령어를 실행합니다.
예시:
sudo kubeadm join <마스터노드_IP>:6443 --token <토큰> --discovery-token-ca-cert-hash sha256:<해시값>
8. 노드 정상 작동 확인
kubectl get nodes
모든 노드가 Ready 상태인지 확인합니다.
추가 설정 (선택 사항)
- kubectl 자동 완성
source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> ~/.bashrc - Ingress 컨트롤러 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml
이제 베어메탈 환경에서 쿠버네티스 클러스터가 실행됩니다. 🚀
