背景
自分用にKubernetesクラスタが欲しくなってきたが、せっかくなので自分で構築してみたくなった。
クラウドでも良かったが、やっぱり長く使うとなると自前のほうが安くなりそうだし、ハードトラブルとかを経ていろんな経験もできるので、あえて自宅サーバで。(火事とかは気をつけないといけないけど・・・)
Containerだけでなく場合によってはWindows等もhostすることもあるかもと思い、基盤にはvSphereを選択。(仕事柄扱うことも多いので勉強も兼ねて)
現時点で最新である6.7U3を採用した。
https://blogs.vmware.com/vsphere/2019/08/announcing-vsphere-6-7-update-3.html
一旦vSphere環境まで構築したので備忘もかねて書いておく
ハードウェア構成
以下参照。合計約11万円。増税前に購入できてよかった。
検討の観点
- 自宅サーバなので大きさ/重さも考慮
- 将来的にHVは増設するかもしれないので共有Storage(iSCSI)を構成
- HypervisorにはDASなし. iSCSI経由でのbootはできないので、Boot用にUSBメモリを外指し(ここにESXiをインストール)
- NAS Diskは一旦1本のみ(Single構成)
- 本当はRAID1組みたいが、現時点で可用性は求められないので
Hypervisor
検討の結果購入したアイテムは以下。
Category | Item | Price(Yen) | Quantity | Sum(Yen) | Link |
---|---|---|---|---|---|
Bareborn | Intel NUC8i5BEH | 47,500 | 1 | 47,500 | https://www.intel.com/content/www/us/en/products/boards-kits/nuc/kits/nuc8i5beh.html |
Memory | Crucial CT16G4SFD824A [SODIMM DDR4 PC4-19200 16GB] | 8,480 | 2 | 16,960 | https://www.crucial.jp/jpn/ja/ct16g4sfd824a |
Power cable | (gb)ACケーブル ミッキー型ケーブル 2P-3P PSE認証 1m | 380 | 1 | 380 | https://www.amazon.co.jp/gp/product/B01MXSGLNQ/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1 |
USB memory | Transcend USBメモリ 16GB USB 3.1 スライド式 ブラック TS16GJF790KBE | 900 | 1 | 900 | https://www.amazon.co.jp/dp/B07MFQJ284/ref=cm_sw_r_tw_dp_U_x_WpWMDbVKZZRJR |
- らでこー先生の記事を見て触発されたこともあり、Intel NUCは最初から視野に入っていた。
- ラズパイも考えたが、VMware compatibility guide的にNGそうな匂いしかしなかったのでやめた(調べてない)
- 過去にBareborn買ったときにRealtekのNICが対応してなくて結構苦労したことがある。最近は色々対応してるのかなぁ
- Intel NUCからどの機種を選定するかについては以下の考え
- できれば最新世代(第8世代)のもの
- CPU観点ではIntel Core i3, i5, i7があったが、i5を選択
- i3だと2 Coreなので物足りなくなる可能性大
- i5, i7はCore数は同じ(4core)なので安いほうが良い(わたしの用途では処理速度は不要)
- 本当は薄さ重視で
NUC8i5BEK
がよかったが、品薄で買えなかったので仕方なくNUC8i5BEH
を購入
NAS
検討の結果購入したアイテムは以下。
Category | Item | Price(Yen) | Quantity | Sum(Yen) | Link |
---|---|---|---|---|---|
NAS | QNAP TS-231P | 19,000 | 1 | 19,000 | https://nttxstore.jp/_II_QN15624587 |
Disk(SSD) | Micron 1100シリーズSSD 2TB 2.5インチ SATA3 MTFDDAK2T0TBN-1AR1ZABYY | 25,980 | 1 | 25,980 | https://nttxstore.jp/_II_SM15919507 |
- 以下要件で検討した
- iSCSI or NFS対応製品で絞り込み
- Diskを冗長化しないのでCloud backupが簡単にできるもの
- 静音(SSD, Fanless, etc)
- 自宅にNASがなかったのでこれを機にファイルサーバ用途としても使えるもの
- 上記を元に検討した結果QNAP or Synologyで選定するのがよさそう
- 当初BUFFALOとIO-DATAも検討したが、自宅ユースでiSCSI対応機種がなさそうだった。
- 結局QNAPを色々検討してたらSynologyを検討するのがめんどくさくなってしまって、QNAPにした・・
既に自宅にあるものを流用
Category | Item | Note |
---|---|---|
Ethernet switch | Timecapsule (2TB) | 自宅にあるWifi router兼Macのバックアップ用途に使ってるTime capsuleのportが余っていたのでHV, NASを接続 |
物理セットアップ
自宅は狭いかつ子供がおり床近くに配置すると良いことはない、ということで以下を購入し天井付近に配置することにした
Item | Price(Yen) | Quantity | Sum(Yen) | Link |
---|---|---|---|---|
アイリスオーヤマ パーテーション メッシュ | 2,891 | 1 | 2,891 | https://www.amazon.co.jp/gp/product/B0013UEEK8/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1 |
アイリスオーヤマ メッシュ パネル バスケット 大 | 2,019 | 1 | 2,019 | https://www.amazon.co.jp/gp/product/B000S6EAQ6/ref=ppx_yo_dt_b_asin_title_o04_s01?ie=UTF8&psc=1 |
こんな感じ。これなら子供に触られることもないし、掃除機に壊されることもない。後日地震が起きたときのためにちゃんと固定する予定
NASセットアップ
ここはあんまり記録取ってなかったので記憶を頼りに。。
初期設定
購入したSSDを取り付けて電源On。初期IPはmanual上は169.254.100.100となるとの記載があったが、実際どうだったかな。とりあえずtcpdumpしたらIPがわかった。
自鯖用のNASを買ったが初期IPがわからないので耳を澄ませて(tcpdumpして)たらIPが聞こえてきた
— Shota Morimoto (@shoutm) September 21, 2019
https://にアクセスしてログインして、初期設定(admin password, timezone, datetime, network settings)を実施。SSDは1本しか積んでないのでRAIDは構成できず。
最後にfirmwareをupdate
Storage pool作成
最初にStorage poolを作成する。簡単に言うとStorage poolは複数のDisk(RAID)を束ね仮想的な1つのStorageを作る機能(参照: https://docs.qnap.com/nas/4.1/SMB/jp/index.html)。ここで作ったStorage poolからVolumeやLUNを削り出すことになる。
「Storage & Snapshots」→「Storage」→「Storage/Snapshots」→「Create」→「New Storage Pool」をクリック
Disk選択画面では1つしかないDiskを選択。あとはdefaultで作成
iSCSIターゲット作成
次にiSCSI接続先となるiSCSIターゲットを作成する。(ここに後ほど作るLUNを関連付けることになる)
「Storage & Snapshots」→「iSCSI」→「iSCSI Storage」→「Create」→「New iSCSI Target」をクリック
以下の通り名前だけ適当につけ、その他のパラメータはdefaultのままとした。お家ユースなのでCHAP認証もなし
LUN作成
最後にLUNを作成する。これがいわゆるdata volumeとなる。
「Storage & Snapshots」→「iSCSI」→「iSCSI Storage」→「Create」→「New Block-Based LUN」をクリック
さきほど作成したStorage poolを選択。容量は最初から確保したくないので「Thin provisioning」をチェック。
LUN Nameを指定し、容量を指定(ここでは512GBとした)
Map to targetセクションにて「Do not map it to a target for now」のチェックを外し、先程作成したiSCSI targetを指定。
これでStorage側の最低限の設定は終了。
vSphere環境構築
ESXiインストール
- このページから該当ESXi 6.7U3を指定しダウンロード。
- 以下の方法で物理install DVDを作成(DVD作成に利用したMacは
macOS Mojave 10.14.6
)- MacのDesktopにダウンロードし、右クリックから
Burn Disk Image * to Disk...
を選択 - デフォルトのまま
Burn
をクリック
- MacのDesktopにダウンロードし、右クリックから
- 該当Diskを含んだDVD drive + USBをNUCに挿して起動。Dialogに従ってインストール
この辺の記事を見てるとDriver周りでハマるかと思いきや全くハマらず。
この後黄色画面でManagement IPやRouting, DNSの設定を行った。またSSHは有効化した。
iSCSIマウント
さきほど作ったiSCSI targetへ接続する
ブラウザでESXiへアサインしたIPにアクセスしてEmbedded host clientへアクセス。ここでStorage → Adapters → Software iSCSIをクリック。
Add dynamic target
ボタンを押してNASのIPを入力。(portはデフォルト)
Save configuration
をクリックした後改めて Software iSCSI
をクリックすると上では出てこなかった Static targets
の部分がDiscoveryされる
この状態でDatastores → New datastoreをクリックしてdatastoreを作成。この時点では512GBを割り当てた
vCenter deploy
- このページからVCSAをダウンロード
- Mac上でISOをマウントし、vcsa-ui-installer→mac→Installer.appを起動。インストーラの指示に従って操作。なおVCSAのインストールは2ステップに分かれている。(Step1: OVAの展開、Step2: 展開されたVMの設定)
- Step1
- Select deployment type: Embedded Platform Services Controllerを選択
- Appliance deployment target: ESXiのIPを指定、User nameにはroot, PasswordはESXiインストール時に指定したものを指定
- Deployment size: Tinyを選択。要求されるリソースサイズ/管理可能なHost/VM数は以下。
- vCPUs: 2
- Memory: 10GB
- Storage: 300GB
- Hosts: 10
- VMs: 100
- Select datastore: 先程作成したdatastoreを選択
- Configure network settings: Networkは一旦デフォルトの
VM Network
を選択(後日変更するかも)。残りのnetwork情報はおうちの環境にあわせて適宜選択
- Step 2
- Appliance configuration:
Synchronize time with NTP servers
を選択(pool.ntp.org)。SSH access
はEnabled - SSO configuration:
Create a new SSO domain
を選択。- Single Sign-On domain nameには自分が取得したdomainを指定(なければ適当でよい。vsphere.localとかがデフォルトだっけな)
- Single Sign-On user name:
administrator
で固定。これ重要。 - Single Sign-On password: 適当に指定
- Appliance configuration:
- Step1
ここまで終わったらブラウザでhttps://<IP>
にアクセスすればログイン可能。ID/PWはadministrator@<domain>/<自分が指定したもの>
を指定(最初rootで入ろうとして入れなかった)
vCenterへのESXi hostの追加
- ブラウザでログインし、「Hosts and Clusters」画面からvCenterのIPが書かれたアイコンを右クリックし、「New Datacenter」をクリック。Datacenterを作成する
- 今作成したDatacenterを右クリックし、「New Cluster」をクリック。vSphere DRSとvSphere HAをクリック(現在はHostが1台しかないので意味ないが・・)
- 今作成したClusterを右クリックし、「Add Hosts」をクリック。ESXi hostのIPとCredentialを入れて進むとホストを追加できる。
結果以下のような画面になる
なんかエラーが出てる
Host TPM attestation alarm
結論から言うとなぜこのエラーが発生しているかわからなかった。
こんなKBがあるらしいが、僕のエラーは以下のように「internal failure」という情報しかなく、対処方法が記載されていなかった
まとめ
- ESXi用Host(Intel NUC)と共有Storage(QNAP)を買った
- 共有StorageにStorage pool、iSCSI target, LUNを作った
- ESXi 6.7U3をインストールし、vCenter6.7をdeployした。
今後の課題
- Disk冗長化
- LUNのbackup
- Host TPM attestation alermの解消