前回は CRI-O を使いましたが、 containerd を使う方法もあるというので試してみました。 「Raspberry Pi で kubernetes (k8s) クラスタを作る」の CRI-O のインストール説明部分を以下のように読み替えて containerd を設定します。
containerd のインストール
使用するツール群をインストールします。
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
リポジトリの登録
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo apt update
インストール
以下のコマンドを実行して、containerd をインストールします。
$ sudo apt install containerd.io
$ sudo mkdir -p /etc/containerd
$ containerd config default | sudo tee /etc/containerd/config.toml
$ sudo systemctl restart containerd
$ sudo systemctl enable containerd
cgroups 設定を変更
このまま設定を続行すると、 cni の起動箇所でエラーが発生してうまく動作しない状況に見舞われます。先ほどの config.toml を開いて、SystemCgroup = false となっている箇所を true に変更します。
$ sudo nano /etc/containerd/config.toml
kubernetes のインストール
containerd のインストールが終わったら kubernetes のインストールを行います。この手順については前回説明しているところと同じになるので省略します。 この記事としては kubernetes 1.25.1 を使うものとして、インストールを行いました。
しばらく kubectl get pods -A コマンドを実行して様子を観察し、 STATUS が Running になることを確認します。このとき、 RESTARTS のカウンタ値が増えていかないことも確認しておきます。以下の図は試行錯誤した後の様子でもあるので、 RESTARTS の値が割と多いものですが定常状態では値は増加しないようになりました。
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-rpzj8 1/1 Running 3 (22m ago) 30m
kube-system coredns-565d847f94-5gkpn 1/1 Running 3 (22m ago) 38m
kube-system coredns-565d847f94-7mlkj 1/1 Running 4 (23m ago) 38m
kube-system etcd-k8s-master 1/1 Running 7 (22m ago) 39m
kube-system kube-apiserver-k8s-master 1/1 Running 9 (22m ago) 39m
kube-system kube-controller-manager-k8s-master 1/1 Running 12 (22m ago) 38m
kube-system kube-proxy-f45mt 1/1 Running 13 (22m ago) 38m
kube-system kube-scheduler-k8s-master 1/1 Running 10 (22m ago) 39m
動作確認環境
- Raspberry Pi OS Lite (2022/09版)
- 64 bit
- kubernetes 1.25.1
その他
今回の /etc/containerd/config.toml ファイルで、 SystemCgroup = true を設定する点は、 Ubuntu 22.04.1 LTS に kubernetes をインストールしたときにも同様に必要になります。
参考
- Ubuntu 22.04 に Kubernetes をインストールして自宅クラウド
- https://www.linuxtechi.com/install-kubernetes-on-ubuntu-22-04/
コメント