はじめに
本記事は、OpenNebula 7.0.1 の KVM 仮想マシン上に SUSE Harvester v1.4.2(HCI基盤)をシングルノードでインストールした際の作業メモです。実際のコマンド実行結果とスクリーンショットを含む、作業ログとして記録しています。
注意: ネステッド仮想化上での Harvester 動作は SUSE 社の公式サポート対象外です。本記事は検証・学習目的の構成であり、本番環境ではベアメタルへの導入を推奨します。
環境情報
ホスト環境
flathill@nebula-f1:~$ cat /etc/os-release | grep PRETTY
PRETTY_NAME="Ubuntu 24.04.3 LTS"
flathill@nebula-f1:~$ uname -r
6.8.0-94-generic
| 項目 | 内容 |
|---|---|
| ホストOS | Ubuntu 24.04.3 LTS(kernel 6.8.0-94-generic) |
| CPU | AMD Ryzen 5 5600G with Radeon Graphics(4コア) |
| メモリ | 32 GB |
| ストレージ | 500 GB 共有ストレージ(OCFS2) |
| OpenNebula | 7.0.1(708c6915) |
| ハイパーバイザー | KVM(ネステッド仮想化有効) |
| ノード構成 | nebula-f1(フロントエンド兼実行ノード)、nebula-n1、nebula-n2 |
Harvester VM 構成
| 項目 | 設定値 |
|---|---|
| VM名 | harvester-singlenode |
| vCPU | 8 |
| メモリ | 32 GB |
| ディスク | 250 GB(qcow2 / virtio) |
| NIC | 1(virtio / admin_net bridge br0) |
| ファームウェア | UEFI(OVMF_CODE_4M.fd) |
| CPUモード | host-passthrough |
| マシンタイプ | q35 |
ネットワーク構成
| 項目 | 値 |
|---|---|
| サブネット | 192.168.11.0/24 |
| ノードIP | 192.168.11.138 |
| 管理VIP | 192.168.11.139 |
| ゲートウェイ | 192.168.11.1 |
| DNS | 8.8.8.8 |
| NTP | 0.suse.pool.ntp.org(デフォルト) |
作業手順
1. ネステッド仮想化の確認
Harvester 内部で KubeVirt(KVM)を使用するため、ホスト側でネステッド仮想化が有効である必要があります。
flathill@nebula-f1:~$ cat /sys/module/kvm_amd/parameters/nested
1
1 と表示され、ネステッド仮想化が有効であることを確認。0 の場合は以下で有効化します。
sudo modprobe -r kvm_amd
sudo modprobe kvm_amd nested=1
echo "options kvm_amd nested=1" | sudo tee /etc/modprobe.d/kvm-nested.conf
2. UEFI ファームウェア(OVMF)の確認と設定
2-1. OVMF パッケージの確認
flathill@nebula-f1:~$ dpkg -l | grep ovmf
ii ovmf 2024.02-2ubuntu0.7 all UEFI firmware for 64-bit x86 virtual machines
インストールされていない場合は sudo apt install ovmf でインストールします。
2-2. ファームウェアファイルの確認
flathill@nebula-f1:~$ ls -la /usr/share/OVMF/
total 8728
drwxr-xr-x 2 root root 4096 Dec 9 08:35 .
drwxr-xr-x 179 root root 4096 Jan 26 05:37 ..
-rw-r--r-- 1 root root 3653632 Nov 27 16:14 OVMF_CODE_4M.fd
lrwxrwxrwx 1 root root 23 Nov 27 16:14 OVMF_CODE_4M.ms.fd -> OVMF_CODE_4M.secboot.fd
-rw-r--r-- 1 root root 3653632 Nov 27 16:14 OVMF_CODE_4M.secboot.fd
lrwxrwxrwx 1 root root 23 Nov 27 16:14 OVMF_CODE_4M.snakeoil.fd -> OVMF_CODE_4M.secboot.fd
-rw-r--r-- 1 root root 540672 Nov 27 16:14 OVMF_VARS_4M.fd
-rw-r--r-- 1 root root 540672 Nov 27 16:14 OVMF_VARS_4M.ms.fd
-rw-r--r-- 1 root root 540672 Nov 27 16:14 OVMF_VARS_4M.snakeoil.fd
Ubuntu 24.04 の注意点: 従来の
OVMF_CODE.fdではなくOVMF_CODE_4M.fdが使用されます。パスを間違えると VM が起動しないため注意してください。
2-3. OpenNebula クラスタへの OVMF 登録
flathill@nebula-f1:~$ sudo -i -u oneadmin
oneadmin@nebula-f1:~$ onecluster show 0 | grep -i ovmf
何も表示されない場合、OVMF が未登録です。以下で登録します。
oneadmin@nebula-f1:~$ onecluster update 0
エディタが開くので以下の行を追加します。
OVMF_UEFIS="/usr/share/OVMF/OVMF_CODE_4M.fd /usr/share/OVMF/OVMF_CODE_4M.secboot.fd"
設定を確認します。
oneadmin@nebula-f1:~$ onecluster show 0
CLUSTER 0 INFORMATION
ID : 0
NAME : default
CLUSTER TEMPLATE
OVMF_UEFIS="/usr/share/OVMF/OVMF_CODE_4M.fd /usr/share/OVMF/OVMF_CODE_4M.secboot.fd"
RESERVED_CPU=""
RESERVED_MEM=""
3. Harvester ISO のダウンロードと登録
3-1. ISO ダウンロード
oneadmin@nebula-f1:~$ cd /var/tmp
oneadmin@nebula-f1:/var/tmp$ wget https://releases.rancher.com/harvester/v1.4.2/harvester-v1.4.2-amd64.iso
oneadmin@nebula-f1:/var/tmp$ wget https://releases.rancher.com/harvester/v1.4.2/harvester-v1.4.2-amd64.sha512
oneadmin@nebula-f1:/var/tmp$ sha512sum -c harvester-v1.4.2-amd64.sha512
oneadmin@nebula-f1:/var/tmp$ ls -lh harvester-v1.4.2-amd64.iso
-rw-rw-r-- 1 oneadmin oneadmin 6.86G ... harvester-v1.4.2-amd64.iso
重要:
/tmpには配置しないでください。 OpenNebula はデフォルトで/tmpがRESTRICTED_DIRSに含まれています。/tmpから登録しようとすると以下のエラーが発生します。ERROR: Not allowed to copy image from /tmp/harvester-v1.4.2-amd64.iso, check RESTRICTED_DIRS in your datastore必ず
/var/tmpなどSAFE_DIRSに指定されたディレクトリを使用してください。
3-2. イメージ登録
oneadmin@nebula-f1:~$ cat ~/harvester-iso.tmpl
NAME = "harvester-v1.4.2-amd64"
PATH = "/var/tmp/harvester-v1.4.2-amd64.iso"
TYPE = CDROM
PERSISTENT = NO
DESCRIPTION = "Harvester v1.4.2 Installation ISO"
oneadmin@nebula-f1:~$ oneimage create -d 108 ~/harvester-iso.tmpl
ID: 81
状態が rdy になるまで待ちます。
oneadmin@nebula-f1:~$ watch oneimage list
oneadmin@nebula-f1:~$ oneimage list
ID USER GROUP NAME DATASTORE SIZE TYPE PER STAT RVMS
81 oneadmin oneadmin harvester-v1.4.2-amd64 image-qcow 6.4G CD No rdy 0
STAT: rdy を確認。
4. ネットワーク設定(固定IPアドレスの追加)
現在の仮想ネットワーク設定を確認します。
oneadmin@nebula-f1:~$ onevnet show 0
VIRTUAL NETWORK 0 INFORMATION
ID : 0
NAME : admin_net
BRIDGE : br0
STATE : READY
VN_MAD : bridge
PHYSICAL DEVICE : enp6s18
VIRTUAL NETWORK TEMPLATE
DNS="1.1.1.1"
GATEWAY="192.168.11.1"
NETWORK_ADDRESS="192.168.11.0"
NETWORK_MASK="255.255.255.0"
ADDRESS RANGE POOL
AR 0
SIZE : 48
LEASES : 10
RANGE FIRST LAST
IP 192.168.11.128 192.168.11.175
Harvester VM 用の IP(192.168.11.138)は AR0(192.168.11.128〜175)の範囲内に含まれています。VIP(192.168.11.139)を他の VM に使われないようホールドします。
oneadmin@nebula-f1:~$ onevnet hold 0 192.168.11.139
確認します。
oneadmin@nebula-f1:~$ onevnet show 0 | grep -A5 "LEASES"
LEASES
AR OWNER MAC IP PORT_FORWARD IP6
...
0 V:-1 02:00:c0:a8:0b:8b 192.168.11.139 - -
V:-1 でホールドされていることを確認。
5. VM テンプレートの作成と起動
5-1. テンプレートファイル作成
oneadmin@nebula-f1:~$ cat ~/harvester-vm.tmpl
NAME = "harvester-singlenode"
CPU = "4"
VCPU = "8"
MEMORY = "32768"
OS = [
ARCH = "x86_64",
MACHINE = "q35",
FIRMWARE = "/usr/share/OVMF/OVMF_CODE_4M.fd"
]
CPU_MODEL = [
MODEL = "host-passthrough"
]
FEATURES = [
ACPI = "yes",
PAE = "yes"
]
DISK = [
SIZE = "256000",
FORMAT = "qcow2",
TYPE = "fs",
DEV_PREFIX = "vd"
]
DISK = [
IMAGE = "harvester-v1.4.2-amd64",
IMAGE_UNAME = "oneadmin",
READONLY = "YES"
]
NIC = [
NETWORK = "admin_net",
NETWORK_UNAME = "oneadmin",
IP = "192.168.11.138",
MODEL = "virtio"
]
GRAPHICS = [
TYPE = "VNC",
LISTEN = "0.0.0.0"
]
5-2. テンプレート作成と VM 起動
oneadmin@nebula-f1:~$ onetemplate create ~/harvester-vm.tmpl
ID: 29
oneadmin@nebula-f1:~$ onetemplate instantiate 29
oneadmin@nebula-f1:~$ onevm list
ID USER GROUP NAME STAT CPU MEM HOST TIME
78 oneadmin oneadmin harvester-single runn 4 32G 192.168.11.1 0d 00h00
6. Harvester インストーラーの操作(VNCコンソール)
Sunstone の VNC コンソールで VM に接続し、Harvester インストーラーを操作します。
6-1. ハードウェアチェック
CPU 8 cores、Memory 32 GiB、仮想化環境(kvm)が検出されます。「Yes」を選択して続行。
6-2. インストールモード選択
「Create a new Harvester cluster」を選択。
6-3. ネットワーク設定
ハマりポイント(重要): Management NIC の選択や IPv4 Method の変更では、Enter キーや矢印キーでは反応しない場合があります。Tab キーを押すことでドロップダウンが展開されます。これは Harvester TUI 特有の挙動です。
設定内容:
| 項目 | 設定値 |
|---|---|
| Management NIC | enp3s0(Tabキーで選択) |
| VLAN ID | 空欄 |
| Bond Mode | active-backup |
| IPv4 Method | Static(Tabキーで切替) |
| IP Address | 192.168.11.138 |
| Subnet Mask | 255.255.255.0 |
| Gateway | 192.168.11.1 |
6-4. その他の設定
| 項目 | 設定値 |
|---|---|
| Hostname | harvester |
| DNS Servers | 8.8.8.8 |
| VIP | 192.168.11.139(Static) |
| Cluster Token | 任意の文字列 |
| Password | YourPassword |
| NTP Servers | 0.suse.pool.ntp.org(デフォルト) |
| Proxy | 未設定(デフォルト) |
| SSH Keys | 未設定(デフォルト) |
| Remote Config | 未設定(デフォルト) |
6-5. 確認画面で「Yes」を選択しインストール開始
インストール中のイメージロード:
- harvester-images-v1.4.2.tar.zst(6.9 GB)
- harvester-repo-images-v1.4.2.tar.zst(190 MB)
- rancher-images-v2.10.1.tar.zst(7.3 GB)
- rke2-images-multus v1.31.4(221 MB)
- rke2-images.linux-amd64 v1.31.4(3.0 GB)
ネステッド環境ではイメージロードに 30〜60 分程度かかります。
7. 再起動後の ISO 取り外し
インストール完了後、自動再起動がかかります。ISO がアタッチされたままだと、再びインストーラーが起動してしまいます。
ハマりポイント: 再起動後にまたハードウェアチェック画面が表示された場合、ISO からブートしています。VM を停止して ISO をデタッチする必要があります。
oneadmin@nebula-f1:~$ onevm poweroff 78 --hard
oneadmin@nebula-f1:~$ onevm show 78 | grep -A5 "VM DISKS"
VM DISKS
ID DATASTORE TARGET IMAGE SIZE TYPE SAVE
0 system-qco vda qcow2 - 250G 1M/250G fs NO
1 image-qcow sda harvester-v1.4.2-amd64 6.4G/6.4G cdro NO
oneadmin@nebula-f1:~$ onevm disk-detach 78 1
oneadmin@nebula-f1:~$ onevm resume 78
8. セットアップ完了の確認
再起動後、Harvester OS がディスクから起動し、Kubernetes クラスタの初期化が始まります。
8-1. Setting up 状態
Harvester Cluster
Management URL: https://192.168.11.139
Status: Setting up Harvester
Node
Hostname: harvester
IP Address: 192.168.11.138
Status: Setting up node
この状態で 10〜30 分程度待ちます。
8-2. Ready 状態
Harvester Cluster
Management URL: https://192.168.11.139
Status: Ready
Node
Hostname: harvester
IP Address: 192.168.11.138
Status: Ready
Cluster と Node の両方が Ready(緑色)になればセットアップ完了です。
9. 管理 UI へのアクセス
ブラウザから https://192.168.11.139 にアクセスします。自己署名証明書の警告を許可して進みます。
9-1. 初回パスワード設定
「Set a specific password to use」を選択し、admin ユーザーのパスワードを設定します。EULA にチェックを入れて「Continue」をクリックします。
9-2. ダッシュボード確認
Harvester Cluster: local
Version v1.4.2
Host: 1 Virtual Machines: 0 Virtual Machine Networks: 0
Images: 0 Volumes: 0 Disks: 1
CPU、Memory、Storage のキャパシティが正常に表示されていることを確認します。
トラブルシューティングまとめ
ISO 登録で RESTRICTED_DIRS エラー
ERROR: Not allowed to copy image from /tmp/..., check RESTRICTED_DIRS in your datastore
対処: ISO を /var/tmp に配置します。OpenNebula はデフォルトで /tmp からのイメージコピーを禁止しています。
TUI でドロップダウンが選択できない
対処: Enter キーではなく Tab キーを使用します。Harvester TUI の一部フィールドは Tab でのみ展開可能です。
再起動後にインストーラーが再表示される
対処: VM を停止し、ISO ディスク(DISK_ID=1)をデタッチして再起動します。
onevm poweroff <VM_ID> --hard
onevm disk-detach <VM_ID> 1
onevm resume <VM_ID>
削除済み VM のゴーストリースが残る
OpenNebula で VM を削除しても、仮想ネットワークのリースが残存することがあります。
VNet 0 AR 0 has leased 192.168.11.138 to VM 46, but it is actually free
対処: onedb fsck で DB 整合性を修復します。
sudo systemctl stop opennebula
sudo onedb fsck
sudo systemctl start opennebula
注意:
onedb fsck実行には OpenNebula サービスの停止が必要です。稼働中の VM はサービス停止中もそのまま動作します(管理操作のみ一時的に不可)。
最終構成サマリ
アクセス情報
| 接続先 | URL / IP | ユーザー名 | パスワード |
|---|---|---|---|
| Harvester 管理UI | https://192.168.11.139 | admin | 初回ログイン時に設定 |
| ノード SSH | 192.168.11.138 | rancher | YourPassword |
| VNC コンソール | Sunstone 経由 | — | F12 でシェル、パスワード: YourPassword |
Harvester バージョン情報
| コンポーネント | バージョン |
|---|---|
| Harvester | v1.4.2 |
| 組み込み Rancher | v2.10.1 |
| Kubernetes(RKE2) | v1.31.4+rke2r1 |
| KubeVirt | v1.3.1 |
| Longhorn | v1.7.2 |
| OS 基盤 | SLE Micro 5.5 |

