環境
デバイス: Raspberry Pi 4 Model B Rev 1.2 (RAM 4GB)
デバイス: Raspberry Pi 3 Model B Rev 1.2 (RAM 1GB) * 3台
計 4台
OS: Ubuntu 22.04
私は、4台のラズパイのマシン名を次のように命名しました。
- k3s0
- k3s1
- k3s2
- k3s3
4Bをserverとして、3B * 3をagentとして動かしていきます。
3Bをserverとして動かしてみましたが、さすがに性能面で厳しそうでした。
手順
使用するラズパイ4台で、以下の準備をしておきます。
- いつもの
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y
。 - ラズパイに固定IPアドレスを振ります。(私は、ルータのDHCP設定でやりました。
/etc/netplan/99_config.yaml
で指定する方法もあります。) - SSHでそれぞれのラズパイにアクセスできるようにしておきます。
-
hostnamectl set-hostname [hostname]
でマシン名をk3s0、k3s1、k3s2、k3s3と設定します。(/etc/hostname
を直接書き換える方法もあります。) -
/etc/hosts
を編集します。
/etc/hostsの例
・・・
192.168.10.110 k3s0
192.168.10.111 k3s1
192.168.10.112 k3s2
192.168.10.113 k3s3
- cgroupのmemoryを有効化します。
コマンド
echo 'cgroup_memory=1 cgroup_enable=memory' | sudo tee -a /boot/firmware/cmdline.txt
sudo reboot
# ↓変更後の /boot/firmware/cmdline.txt
# 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
- ラズパイでCNIを使えるように、モジュールをインストールしてカーネルをアップデートします。
コマンド
uname -r
# 5.15.0-1030-raspi より前のバージョンなら
# カーネルをアップデートする必要があります。
sudo apt install -y linux-image-5.15.0-1030-raspi linux-modules-extra-raspi && reboot
# 再起動が終わったら、uname -r コマンドでカーネルのバージョンを確認します。
K3s server
コマンド
curl -sfL https://get.k3s.io | sh -
# .kube/configを作成して、ユーザからk3sコマンドを叩けるようにします。
mkdir -p ~/.kube
sudo k3s kubectl config view --raw | tee ~/.kube/config
chmod 600 ~/.kube/config
# bashを使用しているので、~/.bashrc に環境変数を定義します。
echo "export KUBECONFIG=$HOME/.kube/config" >> ~/.bashrc
# 後で使います。
sudo cat /var/lib/rancher/k3s/server/node-token
# 出力されたものがトークンです。
K3s agent
コマンド
# [k3s server address]と[token]はそれぞれ置き換えてください。
curl -sfL https://get.k3s.io | K3S_URL=https://[k3s server address]:6443 K3S_TOKEN=[token] sh -
# ↓私の環境ではこんな感じ
curl -sfL https://get.k3s.io | K3S_URL=https://k3s0:6443 K3S_TOKEN=K10637d9f854b81c23f736271bc3cd82a15e96995708bb410c291217c53c006f099::server:ee9a79baaa98dbe0b420f27928432af7 sh -
確認
k3s kubectl get node
# ↓こんな感じで出力されます
# NAME STATUS ROLES AGE VERSION
# k3s1 Ready <none> 46h v1.26.5+k3s1
# k3s2 Ready <none> 46h v1.26.5+k3s1
# k3s3 Ready <none> 46h v1.26.5+k3s1
# k3s0 Ready control-plane,master 46h v1.26.5+k3s1
最後に
Ubuntuインストールしたラズパイ(特にラズパイ3)を使っていたのが原因で、CNI周りで結構沼りました。。。
楽しいk3sライフを。