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も同じように導入できます。
基本的に上の通りでうまくいくのですが、runcのアップデートとKubernetes 1.21のKubeletの仕様変更により設定変更しないでも良くなったので、差分だけ次にまとめます。
差分
SELinux
いつもの方法で対応しています。
上記の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」によって行われたようです。