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
나머지 설치 단계는 쿠버네티스 설치 링크를 참조한다.