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だし、インストールが大変そう」という先入観がありましたが、実際の手順は非常にシンプルでした。

  1. 公式サイトからISOイメージをダウンロード。
  2. WSLから dd コマンド を使ってUSBメモリに書き込み。
  3. 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(仮想マシン)を作ろうとしても、リソース不足で拒否されるか、無理に作ればシステム全体が止まるのは明白です。

Harvester Dashboard

「Surface Pro 5にHarvesterを入れて、モダンなVM環境を作ろう!」という試みは、「インストールとログインまではできたが、実用には全く足りない」 という、スペックの壁を痛感する結果に終わりました。やはり推奨スペック(8コア以上)には、それなりの理由があるようです。

納戸工房的・まとめ

「とりあえず試してみる」精神で挑んだ今回のHarvester導入。インストール自体は dd 一発で簡単でしたが、その後のリソース争奪戦が一番の難所でした。2コア4スレッドのモバイルCPUでHCIを動かすのは、やはり少々無茶だったようです。

とはいえ、壊れたSurfaceに最新のHCIを宿らせ、あの洗練されたダッシュボードを拝めただけでも、エンジニアとしての好奇心は十分に満たされました。