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를 사용하기 위한
사전 작업으로 overlay와 br_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 |