이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/containerD

00. containerd 설치

이쿠우우 2021. 10. 5. 20:44
반응형

 

 

Containerd 설치

 

 

목표

kubernetes 설치 시 container runtime tool을 containerd로 사용하기 위해

containerd 설치 방법을 알아봄.

 

 


 

Test 환경

 OS = CentOS 7

설치는 root 계정으로 진행함.

 

 

 

 

containerd란?

일반적으로 container runtime tool의 대표라고 하면 docker를 떠올릴 것임.

하지만 docker 구조를 더 자세히 파고들어서 따지고 보면 docker가 container runtime tool이라기 보단

docker 를 구성하고 있는 것 중 containerd가 container runtime tool에 해당함.

docker는 version 1.11 이후 버전부터 containerd를 container runtime tool로 사용하고 있음.

 

network, volume과 같은 것들은 dockerd에게 맡기고 

오로지 container에 대한 기능만 가지고 있는 것이 containerd임.

 

containerd 또한 dockerd와 마찬가지로 Daemon Process 형태로 실행됨.

containerd는 ctrcli이라고 불리는 containerd 전용 CLI Client를 제공함. 

containerd는 Namespace 기능을 제공하는데 Docker를 통해 실행되는 containerd는 

"moby"라는 이름의 Namespace에 모든 Container들을 생성함.

 

[containerd 기능]

1. container 생성 

더 자세히 말하자면 containerd 자체가 container를 구동하지는 않음. 

containerd는 containerd-shim, runC를 이용하여 container를 생성하는 역할을 수행함.

 

2. image pull

containerd는 container 구동에 필요한 Image가 존재하지 않는다면 

OCI Spec을 기반으로 Image register Server로부터 Container Image를 Pull 하는 역할을 수행함.

 

3. container lifecycle 관리

container start, stop 상태를 관리함.

 

containerd는 독립 실행형 고수준(high-level) 컨테이너 런타임에 해당함.

 

[고수준(high-level) 컨테이너 런타임]

High Level Container Runtime은 이미지 관리, 압축해제, Low Level Container Runtime으로 전달 등 
조금 더 고수준 작업을 수행함.
보통은 Daemon 방식으로 동작하며 Remote API를 제공하기 때문에, 
외부에서 컨테이너를 실행하거나 모니터링이 가능함.

 

 

 


 

 

1. yum update

 

[명령어]

yum update

 

 

2. 커널 모듈 로딩 설정

 

systemd를 사용하는 모든 linux에서 사용가능한 방법으로

/etc/modules-load.d 경로에

[name].conf 파일명으로 

원하는 모듈 정보를 등록하면 

부팅 시 자동으로 load함.

kubernetes 에서 container runtime tool로 cri-o를 사용하기 위한 

사전 작업으로 overlaybr_netfilter 커널 모듈을 로딩해줘야함.

 

[conf파일 생성 명령어]

cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf

overlay

br_netfilter

EOF

 

[커널 모듈 등록 명령어]

sudo modprobe overlay

sudo modprobe br_netfilter

 

 

[systemd란?]

PID가 1인 프로세스로 부팅부터 서비스 관리, 로그 관리 등 

시스템 전반적인 영역을 관리하는 프로세스

 

[overlay란?]

file system과 관련있는 linux kernel 모듈

참고 : https://docs.docker.com/storage/storagedriver/overlayfs-driver/

 

[br_netfilter란?]

network 관련 linux kernel 모듈

 

 

 

3. 재기동이 커널모듈이 유지되도록 설정

 

[설정 파일 생성 명령어]

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf

net.bridge.bridge-nf-call-iptables  = 1

net.ipv4.ip_forward                 = 1

net.bridge.bridge-nf-call-ip6tables = 1

EOF

 

[적용 명령어]

sysctl --system

 

 

4. CentOS에 containerd 설치

[containerd yum repo 등록 명령어]

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

[설치 명령어]

yum install containerd

[containerd 실행]

systemctl daemon-reload

systemctl enable containerd --now

 


참고 명령어

ctr namespace list

ctr -n moby containers list

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

반응형

'클라우드 > containerD' 카테고리의 다른 글

02. ContainerD private Registry image pull  (0) 2022.01.13
01. ContainerD crictl tool 설치  (0) 2022.01.09