CRI-O 설치 가이드

CRI-O ?

# CRI-O는 OCI 호환 컨테이너 런타임 인터페이스(CRI)다.
가장 일반적으로 사용되는 런타임은 Docker였으나 Kubernetes 1.24 버전부터 Docker용 CRI(컨테이너 런타임 인터페이스) shim이 더 이상 사용되지 않아(Docker Engine은 지원) CRI-O 설치 가이드를 작성한다.

구성 서버 ( VM ) 
Controller Server  : 1EA
Worker Server : 1EA

OS 
Ubuntu 20.04 Server Minimal

지원되는 버전 확인 : https://github.com/cri-o/cri-o/blob/main/install.md#supported-versions
쿠버네티스 설치 참조 : https://tech.hostway.co.kr/2022/02/06/418/

Traffic Setup

# .conf 파일을 만들어 부팅 시 모듈을 로드한다

# Controller / Worker

cat <<EOF | sudo tee /etc/modules-load.d/crio.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter
# 요구되는 sysctl 파라미터 설정, 이 설정은 재부팅 간에도 유지된다.

# Controller / Worker

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

sudo sysctl --system

cgroup driver

# CRI-O는 기본적으로 systemd cgroup 드라이버를 사용한다.

cgroupfs cgroup 드라이버로 전환하려면, /etc/crio/crio.conf 를 수정하거나 /etc/crio/crio.conf.d/02-cgroup-manager.conf 에 드롭-인(drop-in) 구성을 배치한다.

[crio.runtime]
conmon_cgroup = "pod"
cgroup_manager = "cgroupfs"

CRI-O 설치

# Controller / Worker

sudo -i
export OS=xUbuntu_20.04 # OS 버전
export VERSION=1.19     # cri-o 버전

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

sudo apt-get update

sudo apt-get install cri-o cri-o-runc

sudo systemctl daemon-reload
sudo systemctl enable crio --now
sudo systemctl status crio

Controller Node Initialize

# docker의 경우 여러 런타임이 설치되어있어도 1순위로 감지되어 구성하나 CRI-O의 경우 따로 지정해주어야 함

# Controller

kubeadm init --cri-socket=/var/run/crio/crio.sock --ignore-preflight-errors=all --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=203.248.23.192

# Worker

kubeadm join 203.248.23.192:6443 --token 9oy7rn.qtw04nfd8ga417p4 --discovery-token-ca-cert-hash sha256:26218e0c80320b7c23735916c130fc48f644b26314212d917969553ec0651256

나머지 설치 단계는 쿠버네티스 설치 링크를 참조한다.

 

image_print

호스트웨이 시스템 팀

호스트웨이 시스템1팀