涅槃を目指す in はてな

人生に迷う様を書きます

自宅k8sクラスタ作るぞ 1日目

TL;DR

どうした

今まで自宅PCには、Win10(Dell Inspiron3250)マシンを使っておりました。 Core i5にメモリを16GBまで積んでましたがマザボの限界で16GB以上は搭載できないし、もうちょっと拡張したいなあなんて考えていました。

そんな私に

  • win10マシンが不調になる(電源とSSD死亡)
  • 一時給付金の配布決定

というBIGチャンスが来たわけですよ。

給付金1号

家族(嫁と子供1人)でPCを共有してるので、『PCが壊れると不便だから、新しいPC買わないと駄目だよね』という上長(嫁)の同意を取るのは容易でした。

メモリ64GB欲しかったのでIntel NUCなんかも考えましたが、

長期運用を考えるとパーツ単位での交換が可能な自作という結論になりました。

昔はPCを自作してたし、今はWebで構成を見積もれるツールなんかもあるので、見積もりに時間はかかりませんでした。

そして予算10万でメモリ64GB乗るマシンとして誕生したのが『給付金1号』です。

構成は以下の通りです。

  1. マザーボードASUS TUF B450-PLUS GAMING
  2. CPU:AMD Ryzen 5 3500
  3. MEM:16G×2
  4. M.2 SSD:500GB
  5. SATA HDD:2TB

M.2のSSDを基本として、バックアップとか長期保存するデータはHDDに入れる作戦です。 メモリは予算の都合で32GB(16GB*2)しか買えませんでしたが、後にもう32GB増設する予定です。

それらと、ケースやら電源を買って総額91,766円(税込)。すべてツクモで買いました。がんばれニッポン。

組み上がったあとに壊れませんようにと、世界中の基幹システムを支えている『IBM Z』のシールを前面に貼りました。

少し強くなった気分です。

f:id:ryo-plavi:20200705150154j:plain
Cooler Masterのロゴに被せました。ごめんねCooler Master

NWは家庭の都合で無線LANにしました。

こちらの製品をPCI-Eにつけました。上り下り両方共300Mbpsくらいですので全く問題ありません。(このときは…)

www.amazon.co.jp

やりたいこと

『64GBもメモリ積んで何がやりたいのか』ということの説明をしましょう。

私もインフラエンジニアの端くれなので、自宅にkubernetes検証環境が欲しいです。

しかも超大手ECサイトの方の話を聞くと、k8sのアップデート時には更新などせずに、クラスタごと捨てて新規に作成するという話を聞きました。

リスクのあるローリングアップグレードをするくらいなら再作成する。再作成しやすいようにIaaS基盤としてOpenstackを使ってるようでした。

VMベースでコンテナホストを作って、不要になったらサクッと再作成。

めっちゃ格好いい。絶対モテるじゃないですか。

みなさんもこういう光景見たことあるでしょう。

f:id:ryo-plavi:20200705140125j:plain
モテる男性

間違いなくモテますよ。

というわけで、この構成イメージで行きます。すべてコード管理することでいつでも作り直しができる。

f:id:ryo-plavi:20200705134730p:plain
自宅クラスタのイメージ

OpenstackのようなIaaS基盤も入れようかと思ったんですが、流石にシンドイので今回は見送ってます。代わりにTerraformできっちりコード化していきます。sshしたら負け。

なんでUbuntuかって言うと、『ずーっと使ってきたWinに飽きた』『WSLもいいけど、だったら最初っからUbuntuで良くない?』ていうのが大きいです。

あとはDocker for win と Virtual Boxが同居できないとか、自作の場合はOS買い直しになるとか色々とですね。

Ubuntu 20.04 LTSをPCをに入れる

ここはまあ、dvdとかusbにisoイメージつくってインストーラに従えば大丈夫です。

インストール後の設定とかは以下の記事を参考にしました。

qiita.com

あと、自動ログインを有効にしたあとに再起動すると、突然ログインできなくなって死んだと思ったんですが、こちらの記事に助けられました。

qiita.com

Desktop環境

とりあえず

を入れてます。よくあるVimEmacsかという宗教戦争に関して私は、『vi派』という中立の立場です。

インフラ系のSIerで働いていたのでVimEmacsも入ってない(お客様のサーバなので勝手に入れられない)環境が長かったためです。

今のデスクトップはこんな感じです。ターミナルを透けさせて後ろの文字を見ながらやることが多いので透過させてます。

f:id:ryo-plavi:20200705162141p:plain

Ubuntukvmを入れる

さて本題。徐々にやっていきましょう。

以下の記事を参考にしました。

https://help.ubuntu.com/community/KVM/Installation

CPUが仮想化をサポートしているか確認

$ egrep -c '(vmx|svm)' /proc/cpuinfo
6

1以上ならOKです。仮想化支援機能がONかどうかを確認してます。vmxがIntelsvmAMDです。

kvmをインストール

$ sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

するとですね

$ sudo apt-get install qemu-kvm libvirt-bin virt-top  libguestfs-tools virtinst bridge-utils
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ libvirt-bin は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。

E: パッケージ 'libvirt-bin' にはインストール候補がありません

そう来るか。どうした話聞くぞ。

github.com

そのパッケージはもうないんだな。 libvirt-daemon を使えと。なるほどわかった

$ sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

これで無事入りました。

サービスの状態を確認

$ sudo systemctl status libvirtd.service

vmを作っていませんが、virshコマンドが有効になってるか見てみましょう。

$ virsh list --all
 Id   Name   State
--------------------

virt-managerも入れたので、GUIで確認もできます。

f:id:ryo-plavi:20200705165456p:plain

f:id:ryo-plavi:20200705165520p:plain

NW設定でハマる

VM作成時にNATかブリッジか選べるんですけど、NATだとkubernetes入れた後が面倒そうなのでブリッジで行きたかったんですよ。

ところがですね、『WiFiはレイヤー2転送に対応していない』という事実が発覚します。

有線LANだと全く意識せずに「ブリッジでいいべ」くらいに選択してたものが、wifiにした途端にできなくなるんですよ奥さん。

参考記事

beautifulajax.dip.jp

記事の通りやってもうまく行かず途方に暮れてたら救世主が現れました。

www.virtualbox.org

求めていたものがそこにありました。virtualboxならwifiでもブリッジできます。

インストールもダウンロードして apt install コマンドで終わり。なんて便利なんだ…

構成イメージもしれっと直しておきます

f:id:ryo-plavi:20200706214645j:plain
kvmを諦めてVirtualBox

もし僕と同じように困ってて特別こだわりがない場合は、kvmではなくVirtualBoxでやってみたほうがいいと思います。

というわけで、初日にして最初の設計から変更せざるを得なくなる波瀾の幕開け。

次回はTerraform入れて、gitにプロジェクト作ったりしたいですね。

最後までお読みいただきありがとうございました。