Surface Pro 5にHarvester導入成功もCPUリソース不足でVM作成不可
以前、バッテリー交換の修理過程で液晶ディスプレイを破損してしまったSurface Pro 5(model 1796)。これまではヘッドレスなマインクラフトサーバとして余生を過ごさせてきましたが、Intel Core i7-7660U(2コア4スレッド)のリソースをより効率的に、かつモダンに活用したいと考え、オープンソースの仮想化基盤「Harvester」の導入に踏み切りました。単一のOSで一つのサービスを動かす環境から、必要に応じてVM(仮想マシン)を切り出せる「プライベートクラウド」化を試してみました。
そもそも「Harvester」とは何か?
ここで、今回導入した Harvester について簡単に説明しておきます。
Harvester は、Linuxディストリビューションの老舗として知られるSUSE社が中心となって開発しているオープンソースの HCI(ハイパーコンバージド・インフラストラクチャ) です。
「HCI」と聞くと難しそうですが、ざっくり言えば 「これを入れるだけで、自前のAmazon AWSみたいな環境が作れる魔法のOS」 です。
- ハイパーバイザー(仮想化): KubeVirt(k8s上でVMを動かす技術)
- ストレージ: Longhorn(複数のディスクを束ねる技術)
- ネットワーク: Multus(高度なネットワーク制御)
これらがすべて最初からセットになっており、ベアメタル(PC本体)に直接インストールして使います。中身は完全に Kubernetes で構築されているため、k8sの知識がある人なら運用しやすく、見た目も非常に洗練されているのが特徴です。
OSのインストールまでは意外なほどスムーズ
「専用OSだし、インストールが大変そう」という先入観がありましたが、実際の手順は非常にシンプルでした。
- 公式サイトからISOイメージをダウンロード。
- WSLから dd コマンド を使ってUSBメモリに書き込み。
- SurfaceをUSBブートさせ、表示される CLIの指示通りにポチポチと設定。
驚くほどすんなりとインストールは完了し、OSとしてのセットアップは拍子抜けするほどスムーズに終わりました。しかし、本当の戦いは再起動した後に待っていました。
立ち上がらないPodと「503」の壁
再起動後、ブラウザから管理画面(HTTPS)を叩いても返ってくるのは 「503 Service Unavailable」 の文字。
コンソールから kubectl get pods -A で中身を確認してみると、Harvesterのダッシュボードを司るPodがいつまでも起動していません。kubectl describe で詳細を見てみると、原因は単純明快。 「Insufficient cpu(CPUリソース不足)」 です。
Harvesterはシステムを安定させるために、各コンポーネントが一定のCPUリソースを「予約(Requests)」しようとします。4スレッド(4000m相当)という限られた枠の中では、基盤側のPodだけで予約枠がいっぱいになり、管理ダッシュボード用のPodに回す「椅子」が一つも残っていない状態でした。
予約枠を消し去る「外科手術」
このままではログインすらできないため、Kubernetesのルールを無視する力技を試しました。
kubectl edit deployment harvester -n harvester-system を実行し、設定ファイルの resources セクションにある予約設定(Requests)を、思い切って resources: {} に書き換えました。
「最低これだけCPUを確保しろ」という命令を空っぽにしたことで、スケジューラが渋々Podを起動。数分待つとようやくPodが Running になり、ブラウザからHarvesterのダッシュボードを開くことができました。
結論:ダッシュボードは見れたが、VMを作る余力はゼロ
なんとかログインまでは漕ぎ着けましたが、ダッシュボードに表示されたリソース状況は目を疑うものでした。
- CPU Reserved(予約済): 2.99 / 3.04 (98.19%)
- CPU Used(使用率): 3.99 / 3.04 (131.38%)
管理基盤を動かしているだけで、物理的な処理能力を130%も使い切っているオーバーフロー状態。しばらく放置すると1.42/3.04まで落ち着きましたが、この上さらにVM(仮想マシン)を作ろうとしても、リソース不足で拒否されるか、無理に作ればシステム全体が止まるのは明白です。
「Surface Pro 5にHarvesterを入れて、モダンなVM環境を作ろう!」という試みは、「インストールとログインまではできたが、実用には全く足りない」 という、スペックの壁を痛感する結果に終わりました。やはり推奨スペック(8コア以上)には、それなりの理由があるようです。
納戸工房的・まとめ
「とりあえず試してみる」精神で挑んだ今回のHarvester導入。インストール自体は dd 一発で簡単でしたが、その後のリソース争奪戦が一番の難所でした。2コア4スレッドのモバイルCPUでHCIを動かすのは、やはり少々無茶だったようです。
とはいえ、壊れたSurfaceに最新のHCIを宿らせ、あの洗練されたダッシュボードを拝めただけでも、エンジニアとしての好奇心は十分に満たされました。
