5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kubernetes の CRI を Dockershim から containerdに移行する

Last updated at Posted at 2022-02-08

はじめに

k8sdockershimをサポートしなくなるという話はずいぶん前からあって、いつか何とかしないとなーと思っていたのですが、軽く調べてもそれらしい情報が出てこなかったので放置していました。

が、ふと気になって調べてみるとドンピシャな情報が。

基本的には↑に書いてある通りなのですが、やってみると実際の手順は少なく、ものすごく簡単だったので改めてまとめてみます。

移行

Dockercontainerdで動いているため、公式のインストール手順でもDockerインストール時にcontainerdも一緒にインストールしています。
そのため、基本的には設定を切り替えるだけで移行が完了します。

containerdの設定変更

以下のファイルを編集します。nanoでもviでもOKです。

sudo nano /etc/containerd/config.toml

disabled_plugins という項目があるので、これをコメントアウトします。

#disabled_plugins = ["cri"]

ランタイム変更

こちらも、好きなエディタで開いてください。

sudo nano /var/lib/kubelet/kubeadm-flags.env

KUBELET_KUBEADM_ARGSという環境変数が記載されているので、以下を追加します。

--container-runtime=remote --container-runtimeendpoint=unix:///run/containerd/containerd.sock"

全体ではこんな感じになります。

KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.2
--resolv-conf=/run/systemd/resolve/resolv.conf --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"

この環境変数が、kubelet実行時に読み込まれるようです。

再起動

手順としてはこの2つのみになるので、再起動します。
ホストのアップデートなど、他に用があればkubectl drainした後にノードを物理的に再起動しても良いのですが、サービスだけを再起動する場合は以下のコマンドになります。

sudo service containerd restart
sudo service kubelet restart

おわりに

今まで手をこまねていたのは何だったのかと思うほどあっさり終わりました。
ほぼ元記事を日本語にしただけですが、何かの参考になれば幸いです。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?