LoginSignup
4
0

ラズパイ4台のk3s環境整えた

Posted at

環境

デバイス: 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ライフを。

4
0
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
4
0