仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

FedoraでCRI-Oをインストールしてみたら

今日は小ネタです。 CRI-Oを試そうと思い、とりあえずFedora 36でセットアップしてみました。

kubeadmで昨日リリースされたKubernetes 1.25を試そうと思ったのですが、CRI-O 1.25はまだパッケージが用意されていないようなので、1.24を使うつもりです(そっちのネタはそのうちブログで)。

Kubernetes 1.25はセキュリティを強化したReleaseになっていて、Kubernetesのユーザーネームスペースサポート、Seccompプロファイルをデフォルトで利用するように設定する機能、ボリュームマウント時のSELinuxの改善、公式CVEフィードの改善などが行われているようです。

SysdigさんのブログでKubernetes 1.25の新機能について日本語でまとめてくれているので、以下にリンクを張っておきます。

sysdig.jp

大きな変更点の一つとして、Pod Security Policyの機能削除がされたリリースになっています。PSPはKubernetes 1.21のリリースを持って非推奨とされていましたが、PSP機能を利用している場合はアップグレード前にPod Security admissionへの移行が必要であり、注意が必要です。

とりあえずCRI-Oをインストールしてみることにします。 Fedoraには普通のrpmパッケージの他にモジュールパッケージというものがあります。

モジュールをサポートしたことにより、色々なバージョンのパッケージをインストールできるようになりました。 この機能はRHEL8以降でも利用できますし、RHELクローンディストリビューションでも同じようにパッケージを用意していれば使えるはずです。

今回はCRI-O 1.24をインストールします。

$ sudo dnf module list cri-o
Fedora Modular 36 - x86_64
Name    Stream     Profiles     Summary                                                         
cri-o   1.20       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.21       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.22       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.23       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 

Fedora Modular 36 - x86_64 - Updates
Name    Stream     Profiles     Summary                                                         
cri-o   1.20       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.21       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.22       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.23       default [d]  Kubernetes Container Runtime Interface for OCI-based containers 
cri-o   1.24 [e]   default      Kubernetes Container Runtime Interface for OCI-based containers 

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

$ sudo dnf module enable cri-o:1.24
$ sudo dnf install cri-o cri-tools

インストール後にサービスを起動しようとしたら、なんか失敗してしまいました。

$ sudo systemctl enable --now cri-o
Failed to enable unit: Unit file cri-o.service does not exist.

もう一つのサービス名の方(ハイフン無し)はうまくいきました。

$  sudo 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.serviceなんてものはありませんでした。ちょっと前に以前のバージョンを使った時はあったんだけどなあ。CRI-O 1.24からの変更なのでしょうか。ChangeLogを漁ってきます。。 でも個人的にはハイフンを入れるのは面倒なので、この変更は助かります。

$ ls /usr/lib/systemd/system/|grep cri
crio.service
crio-wipe.service