ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Fedora + CRI-O 1.20でKubernetes 1.21を動かしてみる

4/8にKubernetes 1.21がリリースされたので、早速触ってみることにしました。CRI-Oを簡単にセットアップしたかったので、Fedoraベースで試してみます。また、いつものようにSELinuxをenforcingモードのままで動かしてみたいと思います。

動作確認したバージョン

  • Fedora 33, 34 Beta
  • Kubernetes 1.21.0
  • CRI-O 1.20

FedoraにCRI-O 1.21パッケージがリリースされたら確認する予定です。現時点ではKubernetes公式と同様、CRI-O 1.20で確認しています。

基本的には以前投稿した手順で構築可能

以下はCRIとしてCRI-Oを使ったKubernetes 1.19導入の例ですが、インストールするバージョンを変えるだけで1.20も1.21も同じように導入できます。

ytooyama.hatenadiary.jp

基本的に上の通りでうまくいくのですが、runcのアップデートとKubernetes 1.21のKubeletの仕様変更により設定変更しないでも良くなったので、差分だけ次にまとめます。

差分

SELinux

いつもの方法で対応しています。

github.com

上記のIssueで述べられた回避方法を実行してから、kubeadm initを実行して対応しています。

# mkdir -p /var/lib/etcd/
# mkdir -p /etc/kubernetes/pki/
# chcon -R -t svirt_sandbox_file_t /var/lib/etcd
# chcon -R -t svirt_sandbox_file_t /etc/kubernetes/

Control Group v2

Fedora 33での最近のruncのアップデートにより、Control Group v2でも問題なくなっています。次のバージョン以上のruncであれば、特に設定を書き換えずにkubeadmツールでKubernetesを構築できるようになっています。

$ rpm -q runc
runc-1.0.0-375.dev.git12644e6.fc33.x86_64

Kubeletのcgroup driverの設定

Kubernetes 1.20まではKubeletとCRIのcgroup driverの設定を同じものを設定する必要がありましたが、1.21ではKubelet側で何も指定しない場合、デフォルトでsystemdドライバーが使われるようになりました(CHANGELOG-1.21.mdのUrgent Upgrade Notesらへんに書いてある)。

変更は「kubeadm: set the kubelet cgroup driver to "systemd" during "init" #99471」によって行われたようです。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。