自宅サーバーk8s化計画その1 – ハードウェア編

経緯

巷ではどこもかしこもk8s, GKE, EKS, Fargateとコンテナで盛り上がっている。
昨年末、Fargateはある程度触ったのでそろそろk8sも触っておこうと思ったのが今回の背景。
その上で、k8sを構築する先を新規で購入しようか考えていたのだが、自宅サーバーである「MX130 S2」をスペックアップすることで代替できるかもしれないとわかったのでまずは調査と下準備ということで、その記録。

調査(CPU編)

MX130 S2のデフォルトCPUは 「AMD Sempronプロセッサー145(2.80GHz,1コア)」 という代物で、とてもVMホストに耐えられるものではない。
今まではCentOS上のコンテナをいくつか並べてWordPressを運用するだけだったが、今後はVMホストにしたいのでマルチコアでないと運用に耐えられない。
ということで調べていたところ下記記事を見つけた。

富士通 PRIMERGY MX130 S2 に FX-6100 を載せる

どうやらマルチコアのCPUでの動作報告のようで、CPU載せ替えが現実的であることがわかった。
ヤフオクで4000円程度だったのポチった。

調査(ストレージ)

今まではSATAの HDD300GB だったが、この間池袋のツクモに行ったところ、 hpのSSD250GB が3000円だったので即購入。
本当は2本のRAID1にしたかったが、何かあったら作り直す覚悟で一旦はシングルで行くことにした。

調査(ハイパーバイザーの選定)

次にハイパーバイザの選定だが、過去構築経験があるものとしてはKVMとESXiで、触れたことのあるものであればOpenStackであった。
OpenStackだったらハイパーバイザの構築勉強にもなるかと思ったのだけど、ESXiであればMacからもウェブで管理できるようになってるらしいと知った。

MacでESXiを操作したいって?Host Clientを使えばできるよ。ESXi6.0 Update 2ならね!

私が初めてESXiに触ったのはおおよそ8年前で、当時はWindowsだったのでvSphere Client経由で操作していた記憶がある。
今のはHTML5で作られているらしいので、やはり需要があってのことだと思う。※これならMacユーザーも使えるし

調査(VM管理)

調べてみたらTerraformでESXiのVMが管理できるという。(さすがTerraform…)

terraform by HashiCorp * VMware vsphere ESXi5.5 で VM を自動生成

Terraformで構成できるなら、最初だけ作り込めばあとは作ったり削除したりが容易になるので、上述のこともありハイパーバイザはESXiにすることにした。


ということでそれなりの道のりになりそうだけど、とりあえず、自宅サーバーをk8s化すべく動きだした。

準備その1 – さくらのVPSのAnsible化

実は叔父の会社のサイトをWordPressで運用しており、それにさくらのVPSを使っている。
構築をむかーし担当して、運用はゆるゆると任されてやっている。
契約は叔父の会社なのだが、しばらくk8s環境を作って運用できるまで間借りさせてもらい、自宅サーバーにあるサイト2つを退避させるべくまずはここから手を付けた。

このサーバーは CentOS6+Apache+mod_php5.3+MySQL5.1 だった。
定期的に yum update all からの再起動はしているもののインフラエンジニアになりたての頃に一生懸命手で作ったので、もちろん構成管理はしていなかった。
これをバーチャルホスト+SNIで動かせて、且つ最新に追従すべく、 CentOSS7+nginx+php-fpm7.3+MySQL5.7に移行した。
構成管理は Ansible+GitHub で行い、nginxのconfもテンプレート化したので、サイト追加が容易になって、OS再インストールからもちろんやり直したので綺麗に作り直しが出来た。

準備その2 – 自宅サーバーのサイト引っ越し

本ブログ、および https://wiki.inamuu.comを自宅サーバーのCentOS7上で個別にdocker-composeを使って、Dockerで稼働させていた。

自宅サーバーのOSアップデートとアプリケーションのDocker移行

これもDockerの勉強のためにオーバーヘッドを無視して、わざわざDockerで動かしていたもの。
最初はitamaeで構成管理していたが、途中で管理が面倒になってitamaeは捨てた。
ちなみに、上記ではPukiwikiはPHP7化を諦めているが、その後でパッチが出たのでパッチを当ててPHP7.0にしている。

これらを、上述のさくらのVPSへ引っ越した。
それぞれPHP7ではあったので、引っ越しはものの30分程度で終わった。
日々バックアップスクリプトを流していたので、再度実行してそれを移動して、Ansibleをあてて、Let’s Encryptだけ実行して終わり。
これは日々の賜物だなぁという感じ。
MySQLもコンテナで動かしていて、engineをMyISAMから雑にinnodbに変更。
結構ドラスティックに変えたけど、まぁまぁ大丈夫そう。(細かいところは見てない)

準備その3 – 筐体のスペックアップ

メモリが8GBなのでいずれ追加するとして、とりあえずCPU換装とストレージの変更、およびESXiのインストールまですることにした。

今回はこれらを換装する。hpのSSD250GB, CPUがFX6100(6コア)

MX130 S2はさすがスモールオフィス用の静音サーバーということで、シンプルながら中身を交換しやすい構造になっている。
アルミのピンについてはこちらで追加したもの。熱を逃がすために他の方がやっているのを参考にやっている。

左がAMD Sempron145, 右がFX6100。CPUグリスは調べた所「Thermal Grizzly社製」のものが良さそうだったのでこちらにした。

ついでに、前職の上司からちょっと前にいただいた、いわくつきのM.2 SSD。イマイチ常時稼働できないからあげると言われてもらったけど、試す価値があるのでつないでみた。

ということで起動したところ、無事にすべて認識されていることを確認した。
ここまででハードウェアの準備は完了。

ESXiのインストール

ESXiはVMwareのアカウント登録が必要で、登録すれば各種製品のイメージをダウンロードできる。
ESXiは有償版と無償版があり、無償版であれば期間なく無償で使用可能。
ということで早速登録してみようと思ったら、なんと8年前に登録していたことがわかった。
しかも、当時はVMware Playerのために登録した模様(Gmailを漁ったらわかった)。
手元の検証環境はVMware Playerという時代だったのだろうなと思うと、この8年で大きく変わってきているなと改めて感じた。

ISOをDVDに焼いて、インストール完了。
バージョンは先月でたばかりの6.7。
懐かしいのこの2トーンの画面。

上記黄色いコンソール画面で表示されたIPアドレス(セットアップ時に自分で設定したIPアドレス)へ、ブラウザからアクセスしてログインするとOK。
イメージダウンロード時にコピーしたライセンスキーを入力すれば期間が「なし」となる。

これでとりあえずの筐体準備は出来た。
VM作成やらなんやらはまた改めて。