Raspberry Pi OS(64bit版)でk3sを使ってk8sクラスタを構築する

目的

Raspberry Pi OS(64bit版) + Raspberry Pi4 (4GBモデル)を使ってk3sを使ったKubernetesクラスタを構築します。

構成

ネットワーク構成としては以下のようにしています。

画像1

また、k3sを利用するので、データストアにMariaDBを使います。MariaDBのインストールと構築については、

を参照してください。

手順概要

・ホストの起動設定の変更
・ホスト名の変更
・k3sのインストール
・動作確認

手順詳細

・ホストの起動設定の変更

cgroup設定を有効にするために以下の内容を/boot/cmdline.txtに追加します。
なお、1行目に追記する形にしてください。2行目に改行して追記してはいけません。

cgroup_memory=1 cgroup_enable=memory

・ホスト名の変更

初期状態ではRaspberry Pi OSはホスト名がraspberrypiとなっているので2台目および3台目のホスト名が重複してしまいます。そこで2台目、3台目のホスト名を変更します。

/etc/hostnameと/etc/hostsを変更します。以下は2台目の設定内容です。

$ cat /etc/hostname
raspberrypi2
$ cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
127.0.1.1       raspberrypi2

3台目では、上記設定内容のraspberrypi2となっている部分をraspberrypi3に変更してください。

変更が終わったらrebootコマンドで再起動して設定の変更を反映します。

・k3sのインストール

今回は、3台ともにマスターとするマルチマスター構成としたいと思います。すべてのホストをマスターノードとします。

まず、1台目

$ curl -sfL https://get.k3s.io | sh -s - server \
 --datastore-endpoint="mysql://k3s:k3s@tcp(192.168.2.1:3306)/k3s" \
 --node-ip="192.168.2.1" \
 --node-external-ip="192.168.1.201" \
 --advertise-address="192.168.2.1" --write-kubeconfig-mode=644

次に2台目

$ curl -sfL https://get.k3s.io | sh -s - server \
 --datastore-endpoint="mysql://k3s:k3s@tcp(192.168.2.1:3306)/k3s" \
 --node-ip="192.168.2.2" \
 --node-external-ip="192.168.1.202" \
 --advertise-address="192.168.2.2" --write-kubeconfig-mode=644

最後に3台目

$ curl -sfL https://get.k3s.io | sh -s - server \
 --datastore-endpoint="mysql://k3s:k3s@tcp(192.168.2.1:3306)/k3s" \
 --node-ip="192.168.2.3" \
 --node-external-ip="192.168.1.203" \
 --advertise-address="192.168.2.3" --write-kubeconfig-mode=644

それぞれ作業が終わったタイミングでsudo systemctl status k3sなどでk3sの状態を確認しても良いでしょう。

個別の設定内容については別途補足します。

・動作確認

最後に動作確認を行います。いずれかのホストから以下コマンドを実行したときに、raspberrypi, raspberrypi2, raspberrypi3が見えていれば成功です。

$ k3s kubectl get nodes
NAME           STATUS   ROLES    AGE     VERSION
raspberrypi    Ready    master   6m14s   v1.18.9+k3s1
raspberrypi2   Ready    master   3m8s    v1.18.9+k3s1
raspberrypi3   Ready    master   66s     v1.18.9+k3s1

今回は3台構成のRaspberry Pi4とk3sを用いてk8sクラスタを構築しました。

参考

High Availability with an External DB
K3s Server Configuration Reference

この記事が気に入ったらサポートをしてみませんか?