Raspberry Pi OS(64bit版)でk3sを使ってk8sクラスタを構築する
目的
Raspberry Pi OS(64bit版) + Raspberry Pi4 (4GBモデル)を使ってk3sを使ったKubernetesクラスタを構築します。
構成
ネットワーク構成としては以下のようにしています。
また、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
この記事が気に入ったらサポートをしてみませんか?