2020/11/25
今回できたこと
Raspberry PiやJetson Nanoを用いて、K8s(K3s)クラスタを構築するための前準備
単独での温度性能の計測
今後の作業
2台以上稼動時の温度性能確認
K8sクラスタ構築
クラスタ構成機器の固定IP化
お約束
文章化作業
定例作業
Raspberry Pi K8sクラスタ環境構築のためのケース作成
組み立ては、上からもしくは下から順にしないと、ナットを締めることができないので詰む。
https://gyazo.com/d5e9069ca617ef51ce13113ce8ce2526
現在、クラスタを構築するために利用できそうなRaspberry Piは、以下の通り。
table:Raspberry Pi機器情報
機種 OS 備考
Raspberry Pi 4B (4GB) 64bit Raspberry Pi OS
Raspberry Pi 4B (4GB) 32bit Raspberry Pi OS
Raspberry Pi 3B+ 32bit Raspberry Pi OS
(参考:Jetson Nano) 64bit Jetpack GPUの利用が可能
他にも、Raspberry Pi 3/3B+の2台を/CoderDojoNaraで貸し出している。また、もっと前の機種をいくつか持っている。 今後問題になりそうなことは、以下のような項目である。
高負荷時の温度対策: 強力なファンで、このケースにあったものが必要?
電源の供給: 5V 3Aを複数台数供給するのは結構つらい
クラスタネットワークの構成
有線/無線
固定IPアドレスの割り振り
Raspberry Pi利用時の有用な設定
Raspberry Piでは、一般的に寿命の短いmicroSDで運用することが多く、この寿命が問題となることがある。
以下のページでは、寿命を伸ばすための方法が書かれている。
上のページの対処以外に、最近ではファイルシステムをRead-onlyでマウントして利用するOverlay FSも利用可能である。
ただ、この設定を利用した場合、apt upgradeなどの書き込みをともなう作業時には、一時Overlay FSを無効化する必要がある。
上の設定では、GUIを用いて設定変更しているが、CLIで使っている場合にはraspi-configを使って、以下のように設定する必要がある。
設定変更後は、再起動が必要になる。
raspi-configから
Advanced Options
Overlay FS
Would you like the overlay file system to be enabled?
はい: Overlay FSを有効にする
The overlay file system is disabled.
いいえ: Overlay FSを無効にする
Would you like the boot partition to be write-protected?
はい: /bootパーティションをRead-onlyでマウントする
いいえ : /boot パーティションをRead-Writeでマウントする
今後は、システムの設定が固まるまでは、Overlay FSを使わない構成で運用する。
Raspberry Pi の温度計測
今回のようなケースの構成では、おそらくRaspberry Piの発熱に問題が生じると考えられる。
そこで、温度特性を調べるための方法を調査した。
CPU負荷をかけるのには、stressが利用できる。
以下のようにstressのインストールを行う。
code:shell
$ sudo apt install stress
(snip)
実行は、以下のようにCPUコア数を指定して実行する。
code:shell
$ stress -c 4
stress: info: 16033 dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd 温度計測には、vcgencmd measure_tempが利用できる。
code:shell
$ vcgencmd measure_temp
temp=58.0'C
参考にしたページでは、watchコマンドを使って1秒ごとにコマンドを呼び出しているが、データの集計がしにくいので、
whileを使う方法を利用した。
code:shell
### Raspberry Pi4の負荷テストの方法
$ watch -n 1 vcgencmd measure_temp
Every 1.0s: vcgencmd measure_temp raspberrypi: Wed Nov 25 13:33:41 2020
temp=60.0'C
### 今回用いた方法
$ while true; do vcgencmd measure_temp; sleep 10; done
temp=59.0'C
temp=59.0'C
temp=59.0'C
(snip)
temp=81.0'C
temp=82.0'C
temp=81.0'C
temp=81.0'C
大まかに、特に負荷をかけていない状態では60度弱、stress下では80度強の温度となっている。
他の機器での単独の温度データは以下の通り。
table:温度性能
機器 OS 段数(上から) 温度(高負荷時) 備考
Raspberry Pi 4B (4GB) 32bit 1段目 50度強 ケース付属Fanは故障で動いていない
Raspberry Pi 4B (4GB) 64bit 2段目 80度強 今回の作業データはこのマシンのもの
Raspberry Pi 3B+ 32bit 3段目 70度強
インストールすると、自動で起動するように設定される。
code:shell
$ sudo apt install netdata
(snip)
初期設定のままでは、localhostだけしかlistenしていないため、外部からアクセスできるように、以下のように設定を変更した。
code:/etc/netdata/netdata.conf.diff
--- /etc/netdata/netdata.conf.org 2020-11-25 12:22:34.390280924 +0900
+++ /etc/netdata/netdata.conf 2020-11-25 12:22:47.762165231 +0900
@@ -16,4 +16,5 @@
web files group = root
# Netdata is not designed to be exposed to potentially hostile
- bind socket to IP = 127.0.0.1
+ bind socket to IP = 0.0.0.0
+ # bind socket to IP = 127.0.0.1
これで、外部のWebブラウザから、例えばにアクセスすることで、データを確認できる。 以下の図では、温度を確認している。
右側のメニューを見ると、kubepodsなどに関する情報も得られているようである。
https://gyazo.com/c6fd9b2fa77829f74e9de2c03991a6b2
stress下では、以下のように急速に温度が上昇していることがわかる。
https://gyazo.com/d6327e5b4262a8ef3bb63d5f384ca906
今回は、1台のみの稼働での温度調査であったが、今後複数台での温度性能を確認したい。