cri-o란 무엇인가?
cri-o는 컨테이너 런타임 인터페이스를 구현하는 오픈 소스 프로젝트
프로젝트의 목표는 kubernetes와 같은 오케스트레이션 플랫폼에서 사용할 수 있는 가벼운 컨테이너 런타임을 제공
crio의 주요 기능중 하나는 높은 호환성
cri-o version 확인
https://github.com/cri-o/cri-o/blob/main/install.md#supported-versions
사전 구성
- 서버 총 2대(master1, worker1)
| OS | CPU | Memory | IP | |
|---|---|---|---|---|
| master | ubuntu 22.04 | 8core | 16G | 192.168.50.131 |
| worker | ubuntu 22.04 | 8core | 16G | 192.168.50.132 |
OS 튜닝 진행
kubernetes 설치를 위해서는 필수적으로 OS 튜닝을 진행 해줘야 한다.
overlay: OverlayFS는 여러 개의 다른 파일 시스템을 하나로 합쳐서, 하나의 통합된 파일 시스템처럼 관리 가능br_netfilter:리눅스 커널 모듈 중 하나로서, 브리지된 네트워크 트래픽에 대한 IP 패킷 필터링, NAT(Network Address Translation) 네트워킹 기능
cat <<EOF | sudo tee /etc/modules-load.d/crio.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cri-o 설치
cri-o 패키지 다운로드 파일 설정
여기서는 ubuntu22.04 CRIO_VERSION은 1.24버전을 확인
export OS=xUbuntu_22.04
export CRIO_VERSION=1.24
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list
cri-o 레포지토리에 GPG 키를 구성
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS/Release.key | sudo apt-key add -
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -

crio package 설치 진행
apt install cri-o cri-o-runc
# systemd로 cri-o 데몬 실행 및 시작 프로그램 등록
sudo systemctl start crio
sudo systemctl enable crio
kuberentes 설치 관련은
아래 링크를 참조 하셔서 설치 진행 해주세요
cri-o 기반으로 kubernetes 설치하기
docker의 경우 여러 런타임이 설치되어있어도 1순위로 감지되어 구성하나 cri-o의 경우 따로 지정해주어야 함
cri-o 설치 이 후 kubernetes 패키지를 다운 받은 뒤 최종적으로 노드 추가할 때만 아래와 같이 설치 진행 필요
# Controller
kubeadm init --cri-socket=/var/run/crio/crio.sock --ignore-preflight-errors=all --pod-network-cidr=172.16.31.0/16 --apiserver-advertise-address=192.168.50.131
# Worker
kubeadm join 192.168.50.131:6443 --token u110r2.j85uinkkzv6laww2 --discovery-token-ca-cert-hash sha256:81d0d24d3b4517ac5a0458393e888aff5192e297f5c4337afbec20ecf86026f2
이렇게 설치를 진행하면 최종적으로 2개의 노드가 추가 되는 것을 확인 할 수 있다.

지금 까지 cri-o 기반 컨테이너로 kubernetes 설치 진행을 해보았다.
다음은 CNI도 설치를 진행 해볼 예정인데 kube-ovn 설치이다.
이번 글을 시작으로 다양한 방법으로 kubernetes를 구축할 예정이다.
많은 관심 부탁드리겠습니다.
다음 포스팅을 기대 해주세요. 감사합니다!