Kubernetes クラスタを構成してみました。
microSDカードは使わず、USB 3.0端子に接続したSSDで起動しているため、microSDを使用した場合よりも動作は高速です。
永続化ボリュームは、今後、分散ファイルシステムを使用して、スケールアウトで構成(ノードを増やせば容量が増えて、冗長性・信頼性も増加する)を考えています。よって、外付けHDD等は接続する予定はなく、構成や配線もシンプルです。
使用する機材を記録しておこうと思います。
目次
Raspberry Pi 4+Fedora CoreOSのKubernetesクラスタ構成
Raspberry Pi Kubernetesクラスタに使用する機材
Raspberry Pi 4本体
ノードの本体は、Raspberry Pi 4を使用しました。理由を挙げますと。- メモリー搭載量 4GB,8GB必要。
- Raspberry Pi 3の1GBでは不足
- Fedora CoreOSを使用。
- Raspberry Pi 4シリーズのみ対応。
- USB 3.0端子にSSDを接続し、ブート可能。
Raspberry Pi 4のUSB 3.0端子にSSDを接続するところがポイントかもしれません。
アーマーケース
放熱を考えると、アーマーケースは必須だと思います。ノードは結構、熱を持ちますし、アーマーケースならパッシブ冷却(ファンなし)も可能な場合もあります。(室温による色々なメーカーのアーマーケースを試しましたが。海賊ロボ忍者さるさんのアーマーケースは工作精度が高くてお勧めです。私はアーマーケースは今後もPIMORONIさんを選ぶと思います。
USBスティックSSD
本気でサーバとして運用すると、microSDカードは半年ほどで壊れるため、使用しません。また動作速度もSSDと比較して遅いです。スティックSSDを使用する場合の電源容量も調査済みです。
問題なく動作することは確認済みです。
永続ボリュームについては、スケールアウト構成が可能な、分散ファイルシステムを使いたいと考えています。その場合、各ノード(Raspberry Pi 4)に取り付けるSSDの容量が大きければ、その分使用できる分散ファイルシステムの容量も増えます。
SSDの価格が下がれば、スケールアップ(買い替え)ではなく、容量の大きなSSDを搭載したノードを増やしてスケールアウト(足して容量と処理能力アップ)が個人的な理想です。
USB電源
Raspberry Pi 4にスティックSSDを取り付けた場合、USBで5V1A程度の電力を使用します。ノード1台あたり10W(5V 2A)程度の消費電力を想定しました。60WのUSB電源を使用した場合、ノードは4台程度が安全かもしれません。最大6台くらいが限界の気がします。
USB Typ-e C電源ケーブル
USB電源とRaspberry Pi 4をこちらで接続して給電しています。スイッチングハブ
クラスタのネットワークセグメントを分けたい場合は、VLAN対応のL3スイッチが良いのかもしれませんが。今回作成した構成では、通常のGigabit対応のL2スイッチで十分な気がします。金属筐体・電源内蔵・8ポートが価格と性能のバランスが良くてお勧めです。
LANケーブル Cat.6a
LANケーブルは、10Gbpsに対応した、カテゴリ6Aの製品を選択しましょう。爪が折れない・スダレタイプのケーブルは、コンパクトにまとめられるため、2m程度の長めのものを買っておいても、それほど邪魔になりません。
通常のスダレタイプではないCat.6aケーブルは、セパレータが入っているため、Cat.5aよりも太く、曲がらず、硬いのでお勧めしません。Cat.7、Cat.8ケーブルもオーバースペックです。Cat.6eは10Gbps対応しません。
10Gbpsの時代を見越しても、信号特性・周波数特性に問題がない、Cat.6a認証済みのスダレタイプを買っておきましょう。(ただし、引っ張った場合の耐久性などは弱いので注意
使用する本数は、ノードの台数分の本数+別のスイッチングハブと接続する1本になります。
コントロールノード用に別途Raspberry Piをお勧め
コントロールノード用Raspberry Pi 3/4
うーん。Raspberry Pi 3のほうが、価格がPi 4よりも高いですね。クラスタのノードとは別に。下記の目的のため、サーバ的なマシンが必要になります。
- Ansibleのコントロールノード(命令を出す側)
- 今後、たとえばノードを増やしたい場合など、こちらから命令を出すことで、構成を変更することが可能です。
- Fedora CoreOSブートメディア作成用
- Fedora Linuxを起動しています。
- 各ノード用のIgnition(CoreOSのプロビジョニング用設定)の管理用。
- SSHのキーペアを生成・維持。
- Proxyサーバ用
- クラスタのノードは、直接インターネットへ接続できなくなります。
- このため、こちらのコントロールノードを使用して、インターネットへアクセスする必要があります。
このような理由から、Kubernetesのノード以外に1台、別途Raspberry Piがあると便利かと思います。
以上の機材で、クラスタを構成できるかと思います。
コンテナを動かすときに、データベースやファイル等の残したいデータは、永続性ボリュームに入れる必要があります。
永続性ボリューム用に、別途、NFSサーバやNAS等を使用する場合もあるかと思いますが。
まあ、せっかくのクラスタですので、スケールアウト構成を作って、各ノードのSSDに分散して入れられれば、と考えております・・・・このため、今のところNFSサーバやNASは構成に入れていません。
とはいえ、緊急でNFSを使用したい場合は、コントロール・ノード用のRaspberry Pi 3で作れなくもないため。自由度は高い構成だと思います。
次は、実際のクラスタの構築手順を記録させて頂こうと思います。
ではまた!