Docker 기반 Orchestration Tool 조사 (k8s, k3s 비교 및 Docker Swarm 분
2024. 12. 4. 15:38ㆍDocker
항목 | k3s | k8s |
설치 크기 |
작음 (약 40MB)
|
큼 (500MB 이상) |
아키텍처 | 여러 컴포넌트가 단일 바이너리로 통합되어 있음 (때문에 설치가 간편) | 각 컴포넌트가 별도로 실행 |
필요 자원 |
적은 메모리 및 CPU 요구사항
|
높은 메모리 및 CPU 요구사항
|
노드 제한 | 최대 500개 노드까지 무료 | 5000개 이상 노드 지원 |
특징 |
경량화 버전으로 IoT, 엣지 컴퓨팅 등에 적합 단일 바이너리 배포 자동화된 TLS 관리 |
대규모 엔터프라이즈 및 클러스터에 적합 복잡한 배포 구조 수동 TLS 구성 필요 |
배포 방식 | 서버 및 에이전트 모드 사용 | 마스터, 워커, API 서버 등 다중 구성 요소로 배포됨 |
보안 |
k8s와 비슷하지만 일부 보안 기능 제한됨 기본 보안 정책 내장 |
보안 기능 제공 상세한 보안 정책 구성 필요 |
기본 저장소 |
기본 스토리지 메커니즘은 SQLite3
|
etcd |
로드밸런서 |
Service LoadBalancer 컨트롤러 내장
|
외부 로드밸런서 필요
|
CNI |
기본 Flannel CNI 내장
|
CNI 플러그인 별도 설치 필요
|
자동화 도구 | 제한적 지원 | 광범위한 도구 지원 |
모니터링 | 기본 최소화된 모니터링 | 다양한 모니터링 도구 통합 가능 |
업그레이드 | 단순한 업그레이드 프로세스 | 복잡한 업그레이드 절차 |
커뮤니티 | 성장 중인 커뮤니티 | 매우 큰 커뮤니티와 광범위한 지원 |
라이센스 |
Apache2.0 license
NOTICE 파일을 별도로 만들어 Apache License 2.0 소스코드의 저작권 및 Attribution을 고지해야 함. 또한, Apache License 2.0 전문(영문)을 프로그램내에 포함해야 함.
|
|
하이브리드 클라우드 |
공통 컴포넌트 및 주요 차이점
공통 컴포넌트
- API Server
- 쿠버네티스 API를 제공하는 중앙 관리 컴포넌트
- 모든 통신의 중심점으로 작동
- 리소스의 유효성을 검사하고 구성 데이터를 저장
- Controller Manager
- 클러스터의 상태를 관리하고 제어하는 컨트롤러들의 모음
- Node Controller, Replication Controller 등을 포함
- 클러스터의 desired state를 유지
- Scheduler
- Pod를 적절한 노드에 할당하는 역할
- 리소스 요구사항, 하드웨어/소프트웨어 제약 조건 등을 고려
- Kubelet
- 각 노드에서 실행되는 에이전트
- 컨테이너의 생명주기 관리
- 노드의 상태를 API 서버에 보고
- Kube-proxy
- 네트워크 규칙을 관리하고 연결을 포워딩
- 서비스의 네트워크 통신을 처리
주요 차이점
- 데이터 스토어
- K8s: etcd를 사용 (분산 키-값 저장소)
- K3s: SQLite(기본값)를 사용하며 더 가벼움. 선택적으로 etcd 사용 가능
- 아키텍처 통합
- K8s: 각 컴포넌트가 별도로 실행
- K3s: 여러 컴포넌트가 단일 바이너리로 통합되어 있음
- Container Runtime
- K8s: containerd, CRI-O 등 선택 가능
- K3s: containerd가 기본 내장
- 로드밸런서
- K8s: 외부 로드밸런서 필요
- K3s: ServiceLB가 내장되어 있음
- 리소스 요구사항
- K8s: 더 많은 메모리와 CPU 자원 필요
- K3s: 최소한의 자원으로 운영 가능 (라즈베리 파이에서 실행 가능)
Docker swarm VS k3s
결론
Docker Swarm은 설치와 사용이 간단하여 소규모 프로젝트나 개발 환경에 적합한 반면, k3s는 쿠버네티스 기반의 더 풍부한 기능(자동 스케일링, 고급 모니터링, 세밀한 리소스 관리 등)을 제공하여 중대규모 프로덕션이나 엣지 컴퓨팅 환경에 더 적합한 컨테이너 오케스트레이션 도구입니다.
항목 | docker swarm | k3s |
오토 스케일링 | 수동 스케일링만 가능 | HPA (Horizontal Pod Autoscaling) 지원
|
상태 체크 및 자동 복구 | 기본적인 health check 만 지원
|
Liveness Probe (생존 확인)
Readiness Probe (준비 상태 확인)
Startup Probe (시작 확인)
다양한 재시작 정책 (설정 단순함)
|
배포 전략 | 롤링 업데이트만 지원 | 다양한 배포 전략 수립 가능
|
볼륨 관리 | 로컬 볼륨 중심 | Persistent Volume Storage Class 다양한 스토리지 백엔드 지원 동적 볼륨 프로비저닝 |
네트워크 정책 | 기본적인 네트워크 격리
|
세부적인 규칙 설정 가능
양방향 제어
정책 결합 가능
|
리소스 관리 | 컨테이너 단위의 기본적인 리소스 제한 방식 사용
|
다양한 리소스 관리 옵션 보유
|
서비스 디스커버리 (네트워크상의 서비스들이 서로를 자동으로 찾고 통신할 수 있게 하는 메커니즘) |
제한적인 서비스 디스커버리
|
CoreDNS 기반의 고급 서비스 디스커버리
|
모니터링 | 제한적 (수동으로 구현해야하는 것들 다수)
|
포괄적 (기본 지원)
|