今日は小ネタです。 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の新機能について日本語でまとめてくれているので、以下にリンクを張っておきます。
大きな変更点の一つとして、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