おうちKubernetesクラスタを組む(前編)
いままで手元でKubernetes関連のなにかを試そうとすると、基本的にはThinkPad X390(Core i7-8665U 4コア8スレッド, メモリ16GB)のWindowsのWSL2上でkindを起動していたが、WSL2にメモリを12GB当ててしまうとWindowsが使う分が足りなくなってきたり、ノートPCなのでスリープしたりすると復帰時にたまにヘンになったりとあまり快適な状態ではなかったため、superbrothersさんのを参考に小さいデスクトップマシンを買ってみた。
デスクトップマシンの構成
小さめのマシンでいくつか迷ったけど、折角(?)なので使ったことがないRyzenを積んでるASUS Mini PC PN51にしてみた。 CPUはRyzen 5 5500UなのでノートPC用のだけど、基本電源はつけっぱなしにするつもりだったので消費電力が小さそうだし筐体サイズも小さいのでこれで十分かなということにした。
これだけではSSDもメモリもないので、Western Digital WD Blue SN550 NVMe SSD (1TB)と、Crucial CT16G4SFD832A x 2本を買ったので、構成はこうなった。
項目 | 中身 |
---|---|
CPU | Ryzen 5 5500U (6コア12スレッド) |
メモリ | 32GB |
SSD | 1TB |
OS | Ubuntu Desktop 20.04 |
メモリは32GBか64GBかで迷ったけど、VMはいくつか立ち上げるつもりはあるものの、ゲームをするわけでもなく基本SSHかRDP経由で軽くGUIを使くらいの予定なので、32GBでいいやということにした。
消費税と送料込みで、
商品 | 値段 |
---|---|
PN51 | 47,700円 |
WDS100T2B0C | 12,248円 (セールしてた) |
CT16G4SFD832A x 2本 | 19,040円 |
合計 | 78,988円 |
と結構安く済んでよかった。 (価格ドットコムの価格推移をみた感じだと、もうちょっと前ならメモリもSSDも更に安く買えたかもしれないが…)
とりあえずKubernetesを動かす
家で使っているのは普通の家庭用Wi-fiルータなのであまり機能がないが、DHCP固定割当設定はあるのでそれでIPを固定することにして、SSHやRDPするときに迷わないようにした。
まずはvirt-managerを使って、Control Plane用に1つ(2core, 2GB)、Worker Node用に2つ(2core, 4GB)、Ubuntu ServerのVMを立ち上げた。
(いままで使ったことはないが)containerdをインストールして、kubeadmを使ってクラスタを起動して、CalicoをインストールしてReadyにするところまでできた。
その後、kubernetes-dashboardを起動させてみたが、ノートPCのWebブラウザから見ようとすると
- kubernetes-dashboardを
--kubelet-insecure-tls
オプション付きで起動させる。 - デスクトップマシン上で
kubectl proxy --address 0.0.0.0 --accept-hosts='^*$'
を実行する。 - ノートPC上で
ssh -L 18001:<デスクトップマシンのIP>:8001 rkmathi@<デスクトップマシンのIP>
を実行する。 - ノートPC上のWebブラウザで
http://localhost:18001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
にアクセスする。
というように面倒かつ安全じゃない感じの手順が必要になってしまったので、今まであまり触れてこなかったネットワーク周りを勉強しながらいい感じに直したい。
まずは↓のように家の中のノートPC経由でKubernetes上で動かしているWebアプリにアクセスできるようにしたいが、DNSとかMetalLBとかTLS周りとかがよくわかってないので色々試行錯誤中なので、後編に続く。。。
これができたら家の外からもつなげるようにしたい。
続き