IT기술/도커 (docker)

RKE2 Containerd 완벽 가이드: 차세대 컨테이너 런타임의 핵심 장점과 실전 활용법

후스파 2025. 7. 9. 11:42
반응형

RKE2는 차세대 Kubernetes 엔진으로 Containerd를 기본 컨테이너 런타임으로 채택했습니다. 이 글에서는 Containerd의 핵심 장점과 실전 활용법을 상세히 설명합니다.


RKE2가 Containerd를 선택한 이유

Containerd는 Docker보다 경량화되고 보안 강화된 컨테이너 런타임입니다.

아키텍처모놀리식모듈형
메모리 사용350MB 이상50MB 미만
보안 인증CIS 기준 수동 설정 필요CIS 자동 통과
업스트림 호환성Dockershim 의존Kubernetes 표준
시작 시간3-5초1-2초
레지스트리 미러링제한적완전 지원

Containerd는 Kubernetes 공식 런타임으로, 2022년 이후 Docker 지원 중단됨

CNCF 표준화 과정

Containerd는 2017년 Docker에서 분리되어 CNCF(Cloud Native Computing Foundation)에 기증되었으며, 2019년 졸업 프로젝트로 승격되었습니다. 이는 컨테이너 생태계의 표준화와 상호 운용성을 위한 중요한 이정표였습니다.

# Containerd 버전 확인
sudo /var/lib/rancher/rke2/bin/containerd --version

# Kubernetes CRI 호환성 확인
sudo /var/lib/rancher/rke2/bin/crictl version

Containerd의 3대 핵심 장점

군용급 보안

  • CIS Kubernetes 벤치마크 자동 준수
  • FIPS 140-2 암호화 모듈 지원
  • 트리비(Trivy) 주기적 취약점 스캔

경량화된 성능

  • 컨테이너 실행 속도: Docker 대비 20% 향상
  • 리소스 효율: 동일 사양에서 노드 30% 추가 운영 가능

유연한 확장성

  • 플러그인 시스템: 스토리지·네트워크 드라이버 쉽게 교체
  • 크로스 플랫폼: Linux·Windows·ARM 동시 지원

성능 비교 벤치마크

# 컨테이너 시작 시간 측정
time sudo /var/lib/rancher/rke2/bin/crictl run container.json pod.json

# 메모리 사용량 모니터링
sudo /var/lib/rancher/rke2/bin/crictl stats

# 이미지 풀 속도 테스트
time sudo /var/lib/rancher/rke2/bin/ctr image pull docker.io/library/nginx:alpine

Containerd 기본 명령어 활용법

RKE2는 Containerd CLI 도구를 /var/lib/rancher/rke2/bin/ 경로에 설치합니다.

실전 예시

# 실행 중인 컨테이너 확인
sudo /var/lib/rancher/rke2/bin/crictl ps

# 모든 컨테이너 확인 (중지된 것 포함)
sudo /var/lib/rancher/rke2/bin/crictl ps -a

# 이미지 목록 확인
sudo /var/lib/rancher/rke2/bin/crictl images

# 이미지 풀
sudo /var/lib/rancher/rke2/bin/ctr image pull docker.io/library/nginx:alpine

# 컨테이너 로그 확인
sudo /var/lib/rancher/rke2/bin/crictl logs 

# 실시간 로그 모니터링
sudo /var/lib/rancher/rke2/bin/crictl logs -f 

고급 명령어

# 컨테이너 내부 접근
sudo /var/lib/rancher/rke2/bin/crictl exec -it  /bin/bash

# 컨테이너 리소스 사용량 확인
sudo /var/lib/rancher/rke2/bin/crictl stats

# 네임스페이스별 컨테이너 관리
sudo /var/lib/rancher/rke2/bin/ctr --namespace k8s.io container list

# 이미지 삭제
sudo /var/lib/rancher/rke2/bin/ctr image remove docker.io/library/nginx:alpine

# 컨테이너 정보 상세 확인
sudo /var/lib/rancher/rke2/bin/crictl inspect 

환경 변수 설정

# crictl 설정 파일 지정
export CRI_CONFIG_FILE=/var/lib/rancher/rke2/agent/etc/crictl.yaml

# containerd 소켓 경로 설정
export CONTAINER_RUNTIME_ENDPOINT=unix:///run/k3s/containerd/containerd.sock

# PATH 설정
echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin' >> ~/.bashrc
source ~/.bashrc

고급 설정: NVIDIA GPU 연동

Containerd를 통해 GPU 가속을 활용하려면 nvidia-container-runtime을 설정합니다.

단계별 가이드

# 1. NVIDIA Container Runtime 설치
sudo apt-get update
sudo apt-get install -y nvidia-container-runtime

# 2. 런타임 설정 파일 백업
sudo cp /var/lib/rancher/rke2/agent/etc/containerd/config.toml \
   /var/lib/rancher/rke2/agent/etc/containerd/config.toml.backup

# 3. nvidia 섹션 추가
sudo tee -a /var/lib/rancher/rke2/agent/etc/containerd/config.toml.tmpl  > container.log

레지스트리 미러링 설정

프라이빗 레지스트리 설정

# /etc/rancher/rke2/registries.yaml
mirrors:
  docker.io:
    endpoint:
      - "https://registry.example.com"
  "registry.example.com":
    endpoint:
      - "https://registry.example.com"

configs:
  "registry.example.com":
    auth:
      username: "user"
      password: "password"
    tls:
      cert_file: "/path/to/cert.pem"
      key_file: "/path/to/key.pem"
      ca_file: "/path/to/ca.pem"

오프라인 환경 설정

# 1. 이미지 아카이브 생성 (온라인 환경)
sudo /var/lib/rancher/rke2/bin/ctr image export images.tar \
  docker.io/library/nginx:alpine \
  docker.io/library/busybox:latest

# 2. 오프라인 환경으로 전송
scp images.tar offline-server:/tmp/

# 3. 이미지 로드 (오프라인 환경)
sudo /var/lib/rancher/rke2/bin/ctr image import /tmp/images.tar

마무리

RKE2의 Containerd 채택은 보안·성능·미래 지향성의 삼박자를 겸비한 선택입니다. 기존 Docker 사용자라면 crictl과 ctr 명령어에 익숙해져야 하지만, 한번 습득하면 더 효율적인 클러스터 관리가 가능합니다. 특히 GPU 가속이나 엣지 컴퓨팅 환경에서는 Containerd의 우수성이 빛을 발합니다.
핵심 포인트:

  • 60% 메모리 절약으로 리소스 효율성 극대화
  • CIS 자동 준수로 보안 규정 충족
  • 모듈형 아키텍처로 확장성과 유연성 보장
  • crictl/ctr 명령어 숙달로 고급 관리 기능 활용
  • GPU 연동 지원으로 AI/ML 워크로드 최적화

Containerd는 Kubernetes 생태계의 표준 런타임으로 자리잡았으며, RKE2를 통해 엔터프라이즈급 안정성과 성능을 제공합니다.

반응형