728x90
containerd와 CRI-O는 둘 다 Kubernetes에서 사용할 수 있는 컨테이너 런타임이지만, 설계 철학과 사용 목적이 다릅니다.
이에 관련한 내용에 대해 포스팅하도록 하겠습니다.
비교 항목 | containerd | CRI-O |
개발 주체 | CNCF(Docker에서 분리됨) | Red Hat (OpenShift 중심) |
주요 사용 환경 | Kubernetes 기본 런타임(EKS,GKE,AKS) | OpenShift, Red Hat 계열 Kubernetes |
OCI(Open Container Initiative) 호환 | ✅지원 | ✅지원 |
컨테이너 이미지 관리 | OCI 이미지 + Docker 이미지 가능 | OCI 이미지 지원(Docker 이미지 변환 가능) |
CRI 지원 | 기본적으로 지원 | 기본적으로 지원 |
보안 기능 | seccomp, AppArmor 지원 | seccomp, SELinux 기본 활성화 |
운영 방식 | Docker와 비슷한 런타임 아키텍처 | Kubernetes CRI에 최적화된 경량 런타임 |
플러그인 지원 | 네트워크, 스토리지 플러그인 지원 | 단순화된 기능으로 컨테이너 실행 최적화 |
🔹 1️⃣ containerd: Docker에서 분리된 범용 컨테이너 런타임
✅ 특징
- 원래 Docker 엔진 내부에서 컨테이너 실행을 담당하는 런타임이었음
- Docker에서 분리되어 경량 컨테이너 런타임으로 CNCF에 기증됨
- Kubernetes에서 공식 기본 런타임(AWS EKS, Google GKE, Azure AKS 기본)
- Docker 없이도 작동 가능하지만, Docker 이미지 빌드 및 관리도 지원
- 네트워크 및 스토리지 플러그인을 지원하여 확장성이 높음
✅Containerd 구조
Kubernetes (kubelet)
├── CRI (Container Runtime Interface)
│ ├── containerd
│ ├── OCI Runtime (runc)
│ ├── Storage
│ ├── Networking
│ ├── Image Management
🔹 2️⃣ CRI-O: Kubernetes를 위한 경량 컨테이너 런타임
✅ 특징
- 처음부터 Kubernetes에 최적화된 경량 런타임으로 설계됨
- Docker를 거치지 않고 직접 Kubernetes CRI(Container Runtime Interface)만 지원
- OpenShift 및 Red Hat 계열 Kubernetes 환경에서 기본 런타임
- 보안 기능 강화(SELinux, seccomp 기본 활성화)
- 컨테이너 이미지 관리를 단순화하여 추가적인 기능 없이 오직 kubernetes CRI만 지원
✅CRI-O구조
✔️ CRI-O는 Kubernetes CRI 기능만 포함하여 오버헤드가 적고, 보안성이 높음
Kubernetes (kubelet)
├── CRI (Container Runtime Interface)
├── CRI-O
├── OCI Runtime (runc)
🔹 3️⃣ containerd vs CRI-O 비교 상세 분석
비교 항목 | containerd | CRI-O |
출시 배경 | Docker 에서 분리된 컨테이너 런타임 | kubernetes 전용 경량 런타임 |
주요 지원 플랫폼 | Kubernetes, Docker | Kubernetes(OpenShift, Red Hat) |
Docker 이미지 지원 | ✅지원 | 🚫직접 지원 X(OCI 변환 필요) |
네트워크 및 스토리지 플러그인 | ✅지원(확장성 높음) | 🚫미지원(Kubernetes 기본 기능만 활용) |
CRI 지원 | ✅지원 | ✅지원 |
OCI 지원 | ✅지원 | ✅지원 |
보안 기능 | 기본 seccomp, AppArmor | 기본 seccomp, SELinux 활성화 |
메모리 사용량 | 상대적으로 크다 | 가볍고 빠름 |
OpenShift 호환성 | 🚫 기본 지원 X | ✅OpenShift 기본 런타임 |
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] 로드밸런싱을 위한 Control Plane 중설 및 HAProxy 장애 처리 (0) | 2025.03.17 |
---|---|
[Kubernetes] Kubernetes NFS PV/PVC 마운트 실패 해결 과정 (0) | 2025.03.05 |
[Kubernetes] Kubernetes NodePort란? (0) | 2025.02.28 |
[Kubernetes] YAML에서 Deploy(Deployment)와 Service의 차이 (0) | 2025.02.26 |
[EKS] aws-load-balancer-controller 배포 (0) | 2025.02.14 |