[kubernetes] ubuntu 22.04 – kubernetes Container engine – cri-o

1–2분

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)
OSCPUMemoryIP
masterubuntu 22.048core16G192.168.50.131
workerubuntu 22.048core16G192.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를 구축할 예정이다.

많은 관심 부탁드리겠습니다.

다음 포스팅을 기대 해주세요. 감사합니다!