Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드품앗이
- Algorithm
- 코테
- django
- issue
- 동적계획법과최단거리역추적
- 백준
- Python
- 분할정복
- cos pro 1급
- codingtest
- DFS와BFS
- 동적계획법
- vuejs
- android
- BAEKJOON
- Flutter
- AndroidStudio
- 알고리즘
- k8s
- 개발
- cos pro
- 파이썬
- C++
- 안드로이드스튜디오
- DFS
- 안드로이드
- 코딩테스트
- DART
- cos
Archives
- Today
- Total
Development Artist
쿠버네티스 클러스터 설치 도구 비교: Kubespray vs kubeadm vs kops 본문
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
반응형
'Research > Devops' 카테고리의 다른 글
클라우드 네이티브 시대의 설정 분리: Kubernetes에서의 네임스페이스, ConfigMap, 그리고 Secret (0) | 2025.04.13 |
---|---|
쿠버네티스 서비스(Kubernetes Service)의 이론과 실천 (0) | 2025.04.13 |
한 줄로 쉽게 올리는 서비스 – Docker Compose 이야기 (0) | 2025.03.30 |
도커(Docker) 엔진 개념부터 실전까지: DevOps 엔지니어의 정리 노트 (0) | 2025.03.20 |
DWG 파일을 GLTF로 변환하는 서버리스 컨테이너 Lambda 이야기 (0) | 2025.03.11 |
Comments