Raspberry Piを使ってKubernetesクラスタを構築した話
最近、ラズベリーパイの在庫が復活してきたので、ラズパイでKubernetesクラスタを作ることにした!
クラスタ構成
こんな感じでクラスタ構成を構築。
Node | 機種 |
---|---|
Master Node | Raspberry Pi4 8GB |
Worker Node1 | Raspberry Pi4 4GB |
Worker Node2 | Raspberry Pi4 4GB |
当初は、Master Nodeは余ってたラズパイ3を使っていたんだけども、構築中にメモリが足りなくなって使えず断念。。。急遽8GBを追加してどうにかしました。
IPアドレスの固定化
Kubernetesでクラスタを構築するにあたり、DHCPのままクラスタを作るのは無理があるので、まずは各ラズパイのIPを固定化しました。IPの固定化は、自宅のルーターで設定し、ラズパイの方にもIP指定するようにしました。
コンテナランタイムについて
コンテナランタイムにはDockerを使いました。理由はDockerは取り扱いに慣れているからです。
DockerのプライベートRegistryはMaster Nodeに共存させました。なのでそのうちMaster NodeはSSDを換装したいと思っています。
KubernetesでDockerを使うことについて、実はかなりハマりしました。理由は、KubernetesがDockerを非推奨にしたことを完全に忘れていたからです。
どうすればいいか途方に暮れましたが、Kubernetesの公式に思いっきりやり方が書いてました。cri-dockerdというコンポーネントをインストールして、それを使えば問題なくできました!
Ansibleでらくらく環境構築
Kubernetesクラスタを作るにあたり、Ansibleを使ってみることにしました。 実はAnsibleもこれまで使ったことなかったのですが、良いプラクティスになったし、環境構築も楽にできてよかったです。3台(最初はラズパイ3を使っていたので実質4台)に同じようなことを操作をダラダラ追記するのはとても骨が折れる作業だったので・・・。
困ったらChatGPT
今回のKubernetesクラスタを作るにあたり、ChatGPTがとても役に立ちました。
Kubernetesを構築する手順や必要なパッケージのインストールはChatGPTに教えてもらい、エラーが出た時はエラーをそのままChatGPTに放り込むだけでChatGPTがエラーの詳細を教えてくれます。
普段の業務では、エラーメッセージに機密情報が含まれているかもしれないので使う際は慎重になる必要がありますが、完全プライベートな話題なので気にせずエラーメッセージをコピペしてChatGPTに問い合わせることができます。こういった仕事はChatGPTはかなり役に立ちますね!
また、AnsibleのPlaybookを作る上でもとてもお世話になりました。「DockerをインストールするAnsibleのPlaybookを作って」と質問するだけで、それっぽいPlaybookを作ってくれます。 Ansible超初心者の自分にとって、自分が望むPlaybookを作成してくれるのは非常にありがたかったです。
k8sクラスタを作ってみての感想
k8sクラスタを自分で構築することで、よりk8sへの理解が深まった気がします。 k8sクラスタを自分で作るのは楽しいですが、実は結構お金がかかります。今回はラズパイ4の4GBを2台と8GBを1台使っているため、おおよそ3万5千円くらいはかかっているかなと思います。