Kubernetes 클러스터를 간편하게 구축할 수 있는 도구인 Kubespray를 활용해 보겠습니다. Kubespray는 Kubernetes 클러스터를 구성하는 데 필요한 여러 컴포넌트(containerd, CNI, MetalLB 등)를 자동으로 설치해주기 때문에 수작업을 줄이고 시간을 크게 절약할 수 있습니다. Ubuntu 22.04 기반 환경에서 약 30분이면 클러스터 구축이 완료됩니다.
1. 클러스터 환경 구성
- Master Node: 3개 (각 4 Core, 8GB RAM)
- Worker Node: 5개 (각 8 Core, 16GB RAM)
- OS: Ubuntu 22.04
2. 사전 준비 작업
2.1 SSH 키 설정
Master 노드(kube1)에서 SSH 키를 생성하고, 모든 노드에 복사하여 무비밀번호 접근을 설정합니다.
ssh-keygen
ssh-copy-id ubuntu@kube1
ssh-copy-id ubuntu@kube2
ssh-copy-id ubuntu@kube3
ssh-copy-id ubuntu@kube-sub1
ssh-copy-id ubuntu@kube-sub2
ssh-copy-id ubuntu@kube-sub3
ssh-copy-id ubuntu@kube-sub4
ssh-copy-id ubuntu@kube-sub5
2.2 sudoers 설정
모든 노드에서 sudo 권한을 비밀번호 없이 사용할 수 있도록 설정합니다.
sudo -s
echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
2.3 방화벽 비활성화
모든 노드에서 방화벽이 비활성화되어 있는지 확인합니다.
ufw status # 결과가 "Status: inactive"여야 합니다.
2.4 /etc/hosts 파일 설정
모든 노드의 /etc/hosts 파일에 클러스터 IP와 호스트 이름을 추가합니다.
127.0.0.1 localhost.localdomain localhost
10.0.5.10 kube1
10.0.5.153 kube2
10.0.5.179 kube3
10.0.5.123 kube-sub1
10.0.5.64 kube-sub2
10.0.5.130 kube-sub3
10.0.5.95 kube-sub4
10.0.5.17 kube-sub5
3. Kubespray 설치 및 설정
3.1 Kubespray 설치
Master 노드(kube1)에서 Kubespray를 설치합니다.
sudo -s
apt update
apt install python3-pip -y
git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray
pip3 install -r requirements.txt
3.2 Kubespray 인벤토리 설정
인벤토리 디렉토리를 복사한 후, hosts.yaml 파일을 설정합니다.
cd inventory
cp -Rp sample/ mycluster
hosts.yaml 예시
all:
hosts:
kube1:
kube2:
kube3:
kube-sub1:
kube-sub2:
kube-sub3:
kube-sub4:
kube-sub5:
children:
kube_control_plane:
hosts:
kube1:
kube2:
kube3:
kube_node:
hosts:
kube-sub1:
kube-sub2:
kube-sub3:
kube-sub4:
kube-sub5:
etcd:
hosts:
kube1:
kube2:
kube3:
k8s_cluster:
children:
kube_control_plane:
kube_node:
calico_rr:
hosts: {}
3.3 설정 파일 수정
필요한 옵션을 group_vars/k8s_cluster/k8s-cluster.yml 파일에 추가합니다.
kube_proxy_strict_arp: true # MetalLB 사용 시 필요
container_manager: containerd
kubernetes_audit: true
4. Kubespray로 Kubernetes 클러스터 구축
다음 명령어를 실행하여 클러스터를 구축합니다.
ansible-playbook -v -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
4.1 구축 완료 후 확인
kubectl get node -o wide
kubectl get pod -A
kubectl get svc -A
4.2 클러스터 초기화 (재설정)
Kubernetes 클러스터를 재설정하려면 다음 명령어를 실행합니다.
ansible-playbook -v -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
5. 마무리
이제 Kubespray를 활용하여 간편하게 Kubernetes 클러스터를 구축할 수 있습니다. Kubespray는 CPU와 메모리 요구사항이 높은 편이므로, 충분한 자원을 확보한 후 실행하는 것이 좋습니다. 구축 후 kubectl 명령어를 활용하여 정상적인 동작을 확인하세요.