自宅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号』です。
構成は以下の通りです。
M.2のSSDを基本として、バックアップとか長期保存するデータはHDDに入れる作戦です。 メモリは予算の都合で32GB(16GB*2)しか買えませんでしたが、後にもう32GB増設する予定です。
それらと、ケースやら電源を買って総額91,766円(税込)。すべてツクモで買いました。がんばれニッポン。
組み上がったあとに壊れませんようにと、世界中の基幹システムを支えている『IBM Z』のシールを前面に貼りました。
少し強くなった気分です。
NWは家庭の都合で無線LANにしました。
こちらの製品をPCI-Eにつけました。上り下り両方共300Mbpsくらいですので全く問題ありません。(このときは…)
やりたいこと
『64GBもメモリ積んで何がやりたいのか』ということの説明をしましょう。
私もインフラエンジニアの端くれなので、自宅にkubernetes検証環境が欲しいです。
しかも超大手ECサイトの方の話を聞くと、k8sのアップデート時には更新などせずに、クラスタごと捨てて新規に作成するという話を聞きました。
リスクのあるローリングアップグレードをするくらいなら再作成する。再作成しやすいようにIaaS基盤としてOpenstackを使ってるようでした。
VMベースでコンテナホストを作って、不要になったらサクッと再作成。
めっちゃ格好いい。絶対モテるじゃないですか。
みなさんもこういう光景見たことあるでしょう。
間違いなくモテますよ。
というわけで、この構成イメージで行きます。すべてコード管理することでいつでも作り直しができる。
OpenstackのようなIaaS基盤も入れようかと思ったんですが、流石にシンドイので今回は見送ってます。代わりにTerraformできっちりコード化していきます。sshしたら負け。
なんでUbuntuかって言うと、『ずーっと使ってきたWinに飽きた』『WSLもいいけど、だったら最初っからUbuntuで良くない?』ていうのが大きいです。
あとはDocker for win と Virtual Boxが同居できないとか、自作の場合はOS買い直しになるとか色々とですね。
Ubuntu 20.04 LTSをPCをに入れる
ここはまあ、dvdとかusbにisoイメージつくってインストーラに従えば大丈夫です。
インストール後の設定とかは以下の記事を参考にしました。
あと、自動ログインを有効にしたあとに再起動すると、突然ログインできなくなって死んだと思ったんですが、こちらの記事に助けられました。
Desktop環境
とりあえず
を入れてます。よくあるVimかEmacsかという宗教戦争に関して私は、『vi派』という中立の立場です。
インフラ系のSIerで働いていたのでVimもEmacsも入ってない(お客様のサーバなので勝手に入れられない)環境が長かったためです。
今のデスクトップはこんな感じです。ターミナルを透けさせて後ろの文字を見ながらやることが多いので透過させてます。
Ubuntuにkvmを入れる
さて本題。徐々にやっていきましょう。
以下の記事を参考にしました。
https://help.ubuntu.com/community/KVM/Installation
CPUが仮想化をサポートしているか確認
$ egrep -c '(vmx|svm)' /proc/cpuinfo 6
1以上ならOKです。仮想化支援機能がONかどうかを確認してます。vmxがIntelでsvmがAMDです。
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' にはインストール候補がありません
そう来るか。どうした話聞くぞ。
そのパッケージはもうないんだな。 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で確認もできます。
NW設定でハマる
VM作成時にNATかブリッジか選べるんですけど、NATだとkubernetes入れた後が面倒そうなのでブリッジで行きたかったんですよ。
ところがですね、『WiFiはレイヤー2転送に対応していない』という事実が発覚します。
有線LANだと全く意識せずに「ブリッジでいいべ」くらいに選択してたものが、wifiにした途端にできなくなるんですよ奥さん。
参考記事
記事の通りやってもうまく行かず途方に暮れてたら救世主が現れました。
求めていたものがそこにありました。virtualboxならwifiでもブリッジできます。
インストールもダウンロードして apt install
コマンドで終わり。なんて便利なんだ…
構成イメージもしれっと直しておきます
もし僕と同じように困ってて特別こだわりがない場合は、kvmではなくVirtualBoxでやってみたほうがいいと思います。
というわけで、初日にして最初の設計から変更せざるを得なくなる波瀾の幕開け。
次回はTerraform入れて、gitにプロジェクト作ったりしたいですね。
最後までお読みいただきありがとうございました。