はじめに
久しぶりにRaspberry Pi4 Bモデルにk3sをインストールしたらうまく動作しませんでした。調べると既知の問題らしく、解消できたので備忘録として残しておきます。
通常のインストールはこちらで以前記事にしています。
今回の環境と発生した問題
Raspberry Pi4 model B
OS: Ubuntu 22.04.3LTS(64bit)
k3s: v1.28.5+k3s1
上記の環境においてk3sをインストールしたところ、一度サーバーを落とした後、k3sが立ち上がらなくなりました。kubectl
で操作しようとしてもNotReadyで表示されるか、以下の様なエラーが出ていました。
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes)
The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?
複数回叩いて少し違うエラーが出たり、NotReadyで表示されたりと安定しませんでした。
一度アンインストールを行い、再インストールしましたが、ログを見ると以下の様なエラーが出ていました。
FATA[0027] flannel exited: failed to register flannel network: operation not supported
さらにk3sのログを確認するとk3sに必要なコンポーネントが足りていないとのことでした。(ログを取り忘れたので詳細はGithubのissueを確認してください。)
基本的にk3sはパッケージ化されており簡単にインストールできるはずが、どういうことだろうと思いつつ調べていたら同じ様な問題をGithubのissueで見つけ、解決策がわかりました。
解決策
解決策は以下のコマンドを実行し、リブートするだけで完了します。
sudo apt install linux-modules-extra-raspi && reboot
詳細はこちらをご確認ください。
ですので、結局のところ、k3sをUbuntuをインストールしたRaspberry Pi4にインストールするには以下の手順が必要になります。
- Ubuntuインストール
- cgroupsの設定変更
- カーネルモジュールの変更
- リブート
- k3sのインストールという手順です。
1のubuntuをインストール後、cgroupsの設定を変えるために/boot/firmware/cmdline.txt
の末尾にcgroup_memory=1 cgroup_enable=memory
を追加します。編集後はファイルの状態は以下の様になっています。
cat /boot/firmware/cmdline.txt
elevator=deadline net.ifnames=0 console=serial0,115200 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash cgroup_memory=1 cgroup_enable=memory
3のカーネルモジュールのアップデートをする際、リポジトリをアップデート後の対応となります。ですので、手順としては以下の様になります。
sudo apt-get update
sudo sudo apt install linux-modules-extra-raspi && reboot
これが完了後リブートしてあげて、k3sをインストールすれば通常通り使える様になります。
curl -sfL https://get.k3s.io | sh -
2-5の手順は順番はあまり関係ないです。最終的にこれらがそれっていればk3sは動作します。
同じ様に困っている方がいれば参考にしてください。