おうち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を立ち上げた。

f:id:rkmathii:20210616235249p:plain

(いままで使ったことはないが)containerdをインストールして、kubeadmを使ってクラスタを起動して、CalicoをインストールしてReadyにするところまでできた。

f:id:rkmathii:20210616235918p:plain

その後、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 にアクセスする。

というように面倒かつ安全じゃない感じの手順が必要になってしまったので、今まであまり触れてこなかったネットワーク周りを勉強しながらいい感じに直したい。

f:id:rkmathii:20210617001050p:plain

まずは↓のように家の中のノートPC経由でKubernetes上で動かしているWebアプリにアクセスできるようにしたいが、DNSとかMetalLBとかTLS周りとかがよくわかってないので色々試行錯誤中なので、後編に続く。。。

f:id:rkmathii:20210616234717p:plain

これができたら家の外からもつなげるようにしたい。


続き

rkmathi.hatenablog.com