Development Artist

쿠버네티스 클러스터 설치 도구 비교: Kubespray vs kubeadm vs kops 본문

Research/Devops

쿠버네티스 클러스터 설치 도구 비교: Kubespray vs kubeadm vs kops

JMcunst 2025. 4. 11. 19:52
728x90
반응형

서론

쿠버네티스(Kubernetes)는 클러스터 기반의 애플리케이션 운영을 표준화하는 강력한 오픈소스 플랫폼이다. 하지만 설치와 운영은 여전히 복잡하고, 사용 목적이나 인프라 환경에 따라 다양한 설치 도구를 선택해야 한다.

 

이번 글에서는 세 가지 대표적인 설치 도구인 Kubespray, kubeadm, kops의 특징과 장단점을 비교하여, 상황에 따라 어떤 도구가 적절할지 살펴보자.


1. Kubespray

Kubespray는 Ansible을 기반으로 하는 프로덕션 수준의 쿠버네티스 설치 자동화 도구이다. 다양한 클라우드 및 온프레미스 환경에 대응할 수 있으며, 고가용성(HA) 구성도 지원한다.

주요 특징

  • Ansible 기반의 선언적 인프라 관리
  • 다양한 클라우드 및 베어메탈 지원
  • 고가용성 클러스터 구성 지원
  • 커스터마이징 유연성 높음

장점

  • 클라우드/온프레미스 모두 지원
  • HA 구성과 네트워크 플러그인 선택 가능
  • 구성 파일을 통해 클러스터 상세 조정 가능
  • DevOps에 익숙한 엔지니어에게 친숙한 방식 (Ansible)

단점

  • 설치 전 Ansible 환경 구성 필요 (러닝 커브)
  • 복잡한 설정은 디버깅이 어려울 수 있음
  • 설치 속도가 느릴 수 있음 (풀 스택 설치)

설치

* Ansible 기반

사전 요구사항

  • Python 3.x
  • Ansible ≥ 2.9
  • Docker가 설치된 Ubuntu 22.04 노드들 (최소 2개 이상)
# 1. Kubespray 클론
git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray

# 2. 파이썬 의존성 설치
sudo pip3 install -r requirements.txt

인벤토리 구성

# 3. 예제 인벤토리 복사
cp -rfp inventory/sample inventory/mycluster

# 4. inventory/mycluster/hosts.yaml 수정 (노드 정보 입력)
all:
  hosts:
    node1:
      ansible_host: 192.168.1.10
      ip: 192.168.1.10
      access_ip: 192.168.1.10
    node2:
      ansible_host: 192.168.1.11
      ip: 192.168.1.11
      access_ip: 192.168.1.11
  children:
    kube_control_plane:
      hosts:
        node1:
    kube_node:
      hosts:
        node2:
    etcd:
      hosts:
        node1:
    k8s_cluster:
      children:
        kube_control_plane:
        kube_node:

클러스터 실행

# 5. 클러스터 설치 실행
ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml

2. kubeadm

kubeadm은 쿠버네티스를 빠르게 설치할 수 있는 공식 툴로, 쿠버네티스 프로젝트에서 직접 관리한다. Control Plane과 Worker Node 설치를 간편하게 구성할 수 있도록 지원한다.

주요 특징

  • 쿠버네티스 기본 컴포넌트만 설치
  • 최소한의 의존성
  • 인증, TLS, 토큰, 부트스트랩 처리 자동화

장점

  • 공식 툴로 지속적인 유지보수 및 안정성 보장
  • 간단하고 빠른 설치
  • 커스터마이징이 가능하여 학습용/개발용으로 적합
  • 쿠버네티스를 직접 학습하기에 이상적

단점

  • 고가용성 클러스터 구성은 수동 설정 필요
  • Node 자동 조정, 운영 도구(예: 로깅, 모니터링) 미제공
  • 베어메탈 환경에서는 초기 셋업에 다소 어려움이 있음

설치

사전 요구사항

  • Ubuntu 22.04 VM (1 Master + 1 Worker)
  • root 또는 sudo 권한
  • swap off, iptables, container runtime (예: containerd) 사전 설치

마스터 노드

# 1. Kubernetes repo 추가
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | \
  sudo tee /etc/apt/sources.list.d/kubernetes.list

# 2. kubeadm, kubelet, kubectl 설치
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

# 3. 클러스터 초기화
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 4. 일반 사용자용 kubeconfig 세팅
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 5. Flannel CNI 설치
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

워커 노드

# kubeadm join 명령어 복사하여 실행
kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>

3. kops (Kubernetes Operations)

kops는 AWS, GCP, DigitalOcean 등 클라우드 환경에 최적화된 쿠버네티스 설치 도구이다. 인프라부터 쿠버네티스 설치까지 자동화하며, S3나 GCS 등을 상태 저장소로 사용한다.

주요 특징

  • 클라우드 환경 중심의 설치 자동화
  • 상태 저장 (state store) 기반의 클러스터 관리
  • Terraform과 연동 가능

장점

  • 클라우드 환경에 최적화, 특히 AWS에 강함
  • 상태 저장소 기반으로 클러스터 상태를 명확하게 관리
  • 인프라 프로비저닝부터 클러스터 설치까지 풀 스택 자동화
  • Terraform과 통합 가능하여 GitOps 구조도 가능

단점

  • 온프레미스 미지원 (베어메탈에는 적합하지 않음)
  • 학습 곡선이 존재 (state store, DNS 등 이해 필요)
  • 지원 클라우드 환경이 제한적 (AWS 중심)

설치

* AWS 기반

사전 요구사항

AWS CLI 인증 완료

S3 버킷 (State 저장소) 생성

Route53 도메인 등록 필요 (example.com 등)

kops 설치

# 1. kops 설치
curl -Lo kops https://github.com/kubernetes/kops/releases/latest/download/kops-linux-amd64
chmod +x kops
sudo mv kops /usr/local/bin/

S3 버킷 생성 및 환경 변수 설정

# 2. S3 버킷 생성
aws s3api create-bucket --bucket kops-state-store-example --region ap-northeast-2

# 3. 환경 변수 설정
export KOPS_STATE_STORE=s3://kops-state-store-example
export NAME=dev.k8s.example.com

클러스터 생성

# 4. 클러스터 정의
kops create cluster --cloud=aws \
  --zones=ap-northeast-2a,ap-northeast-2b \
  --name=${NAME} \
  --state=${KOPS_STATE_STORE} \
  --yes

상태 확인

kops validate cluster --state=${KOPS_STATE_STORE}

쿠버네티스는 “설치보다 운영이 어렵다”고 할 정도로 운영 자동화가 중요하다. 따라서 설치 도구도 단순히 클러스터를 올리는 데에만 쓰지 말고, 운영 관점에서 얼마나 지속 가능하고 관리가 쉬운지까지 고려하도록 하자.

728x90
반응형
Comments