使用機器

使用機器個数
buffalo 無線中継機 wmr-433w2-bk1
エレコム スイッチングハブ ehc-g05pa-sb1
raspberry pi43
サンディスク microsd 128gb3
オーディオファン lanケーブル 30cm3
anker 547 charger (120w usb-c 4ポート)1
hotnow usbc-usbcケーブル30cm 3本セット1
geeekpi クラスターケース+ファン+ヒートシンク1
mygatti usb c to microケーブル1

osのインストール

raspberry pi imagerを使用。

設定項目設定値
osraspberry pi os lite(64bit)
ホスト名rasp1.local, rasp2.local, rasp3.local
ユーザー名rasp
パスワードrasp

sshを有効にするをチェック -> パスワード認証を使う。

ssh疎通確認

コマンドラインでssh <ユーザー名>@<ホスト名>

# example
ssh rasp@rasp1.local

うまくいくと接続して良いか聞かれるのでyesと入力する。

k8sクラスタ構成

ipアドレスの固定

networkmanagerを無効化

sudo systemctl disable networkmanager
sudo systemctl stop networkmanager

/etc/network/interfaces を編集

auto eth0
iface eth0 inet static
  address 192.168.13.100
  netmask 255.255.255.0
  gateway 192.168.13.1
  dns-nameservers 192.168.13.1 8.8.8.8

再起動し、ip aでipアドレスを固定できているかを確認する。

サーバー

サーバーとしたいラズパイにアクセス(rasp1.local)し、以下のコマンドを実行する。

curl -sfl https://get.k3s.io | sh -

以下のようなエラーが出た。

[info]  failed to find memory cgroup, you may need to add "cgroup_memory=1 cgroup_enable=memory" to your linux cmdline (/boot/cmdline.txt on a raspberry pi)

/boot/cmdline.txt にcgroup_memory=1 cgroup_enable=memoryを追加しろとのこと。 /boot/cmdline.txt はなかったので /boot/firmware/cmdline.txt に記述する。

設定した/boot/firmware/cmdline.txt

console=serial0,115200 console=tty1 root=partuuid=c818a2ac-02 rootfstype=ext4 fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory

ラズパイを再起動した後に、再度以下のコマンドを実行するとうまくインストールできた。

curl -sfl https://get.k3s.io | sh -

以下コマンドを実行してtokenをメモしておく。

sudo cat /var/lib/rancher/k3s/server/node-token

クライアント

クライアントとしたいラズパイにアクセス(rasp2.local, rasp3.local)

rasp1.local と同様に、 /boot/firmware/cmdline.txt にcgroup_memory=1 cgroup_enable=memoryを追加する。

再起動後に以下のコマンドを実行する。

curl -sfl https://get.k3s.io | k3s_url=https://<マスターのipアドレス>:6443 k3s_token=<メモしたnode-token> sh -

サーバーラズパイでクラスタができていることを確認する。

rasp@rasp1:~ $ sudo kubectl get nodes
name    status   roles                  age     version
rasp1   ready    control-plane,master   3d17h   v1.30.4+k3s1
rasp2   ready    <none>                 3d17h   v1.30.4+k3s1
rasp3   ready    <none>                 3d17h   v1.30.4+k3s1
# statusがreadyになっていればok

参考文献