[kubernetes] CRI-O 설치하기
[kubernetes] CRI-O 설치하기
Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 오픈 소스 플랫폼이며, 다양한 환경에서 일관된 애플리케이션 실행을 가능하게 해주는 컨테이너 오케스트레이션 도구입니다.
Kubernetes에서의 CRI-O(Container Runtime Interface - Open Container Initiative)는 컨테이너 런타임으로서, Kubernetes의 kubelet과 통신하여 컨테이너의 생성, 실행, 관리 등을 수행합니다. CRI(Container Runtime Interface)를 통해 Kubernetes의 명령을 수신하고, 컨테이너 이미지를 풀링하거나 컨테이너를 시작, 정지, 삭제하는 작업을 수행합니다.
Kubernetes 를 사용하기 전 CRI-O를 설치하고 확인하는 것을 테스트 해보도록 하겠습니다.
설치
CRI-O 설치 작업은 Rocky Linux 9.4 버전에서 테스트를 진행했습니다.
CRI-O는 github으로 프로젝트가 관리되고 있습니다.
CRI-O의 최신 릴리즈 노트를 확인해보면 24년 9월 6일을 기준으로 3일 전에 릴리즈한 v1.30.5 버전이 최신 버전입니다.
최신 버전인 v1.30.5버전을 설치해보겠습니다.
CRI-O를 yum
명령어를 통해 설치하기 repo를 등록해줍니다.
repo에는 최신 버전인 CRI-O를 설치하기 위해 v1.30
버전 값을 입력하였습니다.
cat <<EOF | tee /etc/yum.repos.d/cri-o.repo
[cri-o]
name=CRI-O
baseurl=https://pkgs.k8s.io/addons:/cri-o:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/addons:/cri-o:/stable:/v1.30/rpm/repodata/repomd.xml.key
EOF
yum
명령어를 사용하여 CRI-O를 설치합니다.
# yum install -y cri-o
=== 생략 ===
Running transaction
Preparing : 1/1
Installing : cri-o-1.30.5-150500.1.1.x86_64 1/1
Running scriptlet: cri-o-1.30.5-150500.1.1.x86_64 1/1
Verifying : cri-o-1.30.5-150500.1.1.x86_64 1/1
Installed:
cri-o-1.30.5-150500.1.1.x86_64
Complete!
systemctl
명령어를 사용하여 CRI-O 서비스를 시작하고 자동 재시작 리스트에 등록합니다.
# systemctl enable --now crio
Created symlink /etc/systemd/system/cri-o.service → /usr/lib/systemd/system/crio.service.
Created symlink /etc/systemd/system/multi-user.target.wants/crio.service → /usr/lib/systemd/system/crio.service.
설치 확인
여러 명령어를 사용하여 CRI-O가 정상적으로 설치되고 구동 중인지 확인합니다.
systemctl
명령어를 사용하여 CRI-O 서비스 데몬의 상태를 확인합니다.
# systemctl status crio
● crio.service - Container Runtime Interface for OCI (CRI-O)
Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; preset: disabled)
Active: active (running) since Fri 2024-09-06 08:25:38 KST; 4s ago
Docs: https://github.com/cri-o/cri-o
Main PID: 192282 (crio)
Tasks: 11
Memory: 20.3M
CPU: 409ms
CGroup: /system.slice/crio.service
└─192282 /usr/bin/crio
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.072731000+09:00" level=info msg="Restore irqbalance config: created backup file"
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078009800+09:00" level=warning msg="Error encountered when checking whether cri-o should wipe containers: open /var/run/cr>
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078581900+09:00" level=info msg="Registered SIGHUP reload watcher"
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078617000+09:00" level=info msg="Starting seccomp notifier watcher"
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078700400+09:00" level=info msg="Create NRI interface"
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078795100+09:00" level=info msg="runtime interface created"
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078820100+09:00" level=info msg="Registered domain \"k8s.io\" with NRI"
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078832100+09:00" level=info msg="runtime interface starting up..."
Sep 06 08:25:38 K8S-CN-001 crio[192282]: time="2024-09-06 08:25:38.078843100+09:00" level=info msg="starting plugins..."
Sep 06 08:25:38 K8S-CN-001 systemd[1]: Started Container Runtime Interface for OCI (CRI-O).
자체 crio
명령어를 사용하여 CRI-O 버전을 확인합니다.
# crio --version
crio version 1.30.5
Version: 1.30.5
GitCommit: df27b8f8eb49a13c522aca56ee4ec27bc7482fad
GitCommitDate: 2024-09-02T07:15:35Z
GitTreeState: clean
BuildDate: 1970-01-01T00:00:00Z
GoVersion: go1.22.0
Compiler: gc
Platform: linux/amd64
Linkmode: static
BuildTags:
static
netgo
osusergo
exclude_graphdriver_btrfs
exclude_graphdriver_devicemapper
seccomp
apparmor
selinux
LDFlags: unknown
SeccompEnabled: true
AppArmorEnabled: false
CRI-O 소켓이 정상적으로 생성되었는지 확인합니다.
kubernetes 에서는 해당 경로의 소켓을 설정하여 컨테이너 런타임을 설정할 수 있습니다.
# ls -al /var/run/crio/crio.sock
srw-rw----. 1 root root 0 Sep 6 08:25 /var/run/crio/crio.sock
위 명령어까지 모두 정상적으로 확인되었다면 CRI-O 설치는 정상적임을 확인하실 수 있습니다.
Rocky Linux 9.4 및 기타 OS에서 CRI-O를 설치하여 kubernetes에서 컨테이너 런타임으로 사용할 수 있습니다.
먼저, yum
을 사용해 CRI-O 설치를 위해 필요한 repository를 설정하고 최신 버전인 v1.30.5를 설치합니다. 설치 후 systemctl
명령어로 CRI-O 서비스를 시작하고 자동으로 재시작되도록 설정합니다. 설치가 완료된 후, systemctl status crio
명령어로 서비스 상태를 확인하고, crio --version
명령어로 CRI-O 버전을 확인합니다.
마지막으로 /var/run/crio/crio.sock
경로에 소켓이 정상적으로 생성되었는지 확인하여 Kubernetes와 연동할 수 있는지 점검할 수 있습니다.
지금까지 CRI-O 설치 및 설치 방법을 간단히 알아보는 시간을 가졌습니다....! 끝...!
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
[Reference]
https://github.com/cri-o/packaging/blob/main/README.md#usage