Kubernetes クラスタを構成してみました。
microSDカードは使わず、USB 3.0端子に接続したSSDで起動しているため、microSDを使用した場合よりも動作は高速です。
永続化ボリュームは、今後、分散ファイルシステムを使用して、スケールアウトで構成(ノードを増やせば容量が増えて、冗長性・信頼性も増加する)を考えています。よって、外付けHDD等は接続する予定はなく、構成や配線もシンプルです。
使用する機材を記録しておこうと思います。
Raspberry Pi 4+Fedora CoreOSのKubernetesクラスタ構成
Raspberry Pi Kubernetesクラスタに使用する機材
Raspberry Pi 4本体
[amazonjs asin=”B089GSG8Y1″ locale=”JP” title=”ラズベリーパイ 4 コンピューターモデルB 8GB Raspberry Pi 4 ラズパイ 4 TELEC認定取得済み (Raspberry Pi 4 8GB)”]ノードの本体は、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を接続するところがポイントかもしれません。
アーマーケース
[amazonjs asin=”B082Y2T7Y7″ locale=”JP” title=”Aluminium Heatsink Case for Raspberry Pi 4 (Raspberry Pi 4用 アルミ ヒートシンクケース) (Zircon Blue)”]放熱を考えると、アーマーケースは必須だと思います。ノードは結構、熱を持ちますし、アーマーケースならパッシブ冷却(ファンなし)も可能な場合もあります。(室温による
色々なメーカーのアーマーケースを試しましたが。海賊ロボ忍者さるさんのアーマーケースは工作精度が高くてお勧めです。私はアーマーケースは今後もPIMORONIさんを選ぶと思います。
USBスティックSSD
[amazonjs asin=”B08N4JHGJL” locale=”JP” title=”【Amazon.co.jp限定】バッファロー SSD 外付け 1.0TB 超小型 コンパクト ポータブル PS5/PS4対応(メーカー動作確認済) USB3.2Gen1 ブラック SSD-PUT1.0U3-B/N”]本気でサーバとして運用すると、microSDカードは半年ほどで壊れるため、使用しません。また動作速度もSSDと比較して遅いです。
スティックSSDを使用する場合の電源容量も調査済みです。
問題なく動作することは確認済みです。
永続ボリュームについては、スケールアウト構成が可能な、分散ファイルシステムを使いたいと考えています。その場合、各ノード(Raspberry Pi 4)に取り付けるSSDの容量が大きければ、その分使用できる分散ファイルシステムの容量も増えます。
SSDの価格が下がれば、スケールアップ(買い替え)ではなく、容量の大きなSSDを搭載したノードを増やしてスケールアウト(足して容量と処理能力アップ)が個人的な理想です。
USB電源
[amazonjs asin=”B00YS1RQVI” locale=”JP” title=”Anker PowerPort 10 (60W 10ポート USB急速充電器) 【PSE認証済 / PowerIQ & VoltageBoost搭載】iPhone XS / XS Max / XR, Galaxy S9 / S9+ 等対応 (ホワイト)”]Raspberry Pi 4にスティックSSDを取り付けた場合、USBで5V1A程度の電力を使用します。ノード1台あたり10W(5V 2A)程度の消費電力を想定しました。
60WのUSB電源を使用した場合、ノードは4台程度が安全かもしれません。最大6台くらいが限界の気がします。
USB Typ-e C電源ケーブル
[amazonjs asin=”B071XP29CZ” locale=”JP” title=”Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ブラック”]USB電源とRaspberry Pi 4をこちらで接続して給電しています。
スイッチングハブ
[amazonjs asin=”B09H38V41Z” locale=”JP” title=”【Amazon.co.jp限定】 バッファロー 8ポート スイッチングハブ Giga 金属筐体 簡易パッケージ 壁掛け設置対応 LSW6-GT-8ESL/NBK”]クラスタのネットワークセグメントを分けたい場合は、VLAN対応のL3スイッチが良いのかもしれませんが。今回作成した構成では、通常のGigabit対応のL2スイッチで十分な気がします。
金属筐体・電源内蔵・8ポートが価格と性能のバランスが良くてお勧めです。
LANケーブル Cat.6a
[amazonjs asin=”B00G3BXY58″ locale=”JP” title=”BUFFALO ツメの折れないLANケーブル カテゴリー6 ストレート スタンダード 2m ブラック BSLS6NU20BK2″]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
[amazonjs asin=”B01NAHBSUD” locale=”JP” title=”Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品”]うーん。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で作れなくもないため。自由度は高い構成だと思います。
次は、実際のクラスタの構築手順を記録させて頂こうと思います。
ではまた![amazonjs asin=”B099214J49″ locale=”JP” title=”バッファロー SSD 外付け 2.0TB USB3.2 Gen2 読込速度600MB/秒 PS5/PS4メーカー動作確認済 コンパクト 小型 Type-Cアダプター付属 ブラック SSD-SCT2.0U3BA/N”]


コメントを残す