GCPにNutanix CEを自力デプロイの検証をしてみる パート1
前置き
Nutanixの提案やラボ環境を作る時、demo.nutanixやravelloを使えば良いのですが、
やっぱり1から構築したいなぁと思い立った時の壁が、要求されるハイスペック機だったりします。
要件を満たす物理マシン、Nestできる仮想環境も手元になかった当時、
パブリッククラウドでできないかな〜と思ってましたが、
Intel VT-xが有効化されてなかったのでムリでした。
もう1年ほど前ですが、Google Compute EngineでNested Virtualizationが有効化されたので、今回デプロイできるかやってみました。
Enabling Nested Virtualization for VM Instances | Compute Engine Documentation | Google Cloud
読んで頂く前に結果ですが、失敗しています。
今回はその経緯を綴りつつ、次のパート2に繋げたいと思います。
現状GCPではCentOS等のKVMの動作確認のみが実施されており、その他はサポート対象外となります。
Nutanix CE とGCP の準備
Nutanix CEダウンロード
Nutanixでアカウント登録を行い、
Download Nutanix CE, Docs, and Guides | Nutanix Community より Community Edition をダウンロードします。
今回は「ce-2018.05.01-stable.img.gz」でした。インポート用のプロジェクトを準備
手順は省略しますが、GCPのアカウント登録を行い、プロジェクトの作成を行います。
Nutanix CE のインポート
先にGoogle Cloud SDKを作業端末にインストールしておく必要があります。
Google Cloud SDK ドキュメント | Cloud SDK | Google Cloud
ダウンロードされた「ce-2018.05.01-stable.img.gz」(2018/12/18現在)を解凍します。
アップロードを実行する為、ターミナルからgcloudコマンドを実行します。
#GCPのプロジェクト一覧表示 gcloud projects list #プロジェクトの選択 gcloud config set project <project-id> #インポート gcloud compute images import <image-name> --source-file <source-file-path> --os centos-7
project-id: GCPで作成したプロジェクトのID(名前じゃないです)
image-name: インポート後のイメージ名
source-file-path: 先の手順でダウンロードしたimgのフルパス
--osは、インポート時に対象OSのGCP用ドライバーのインストールの為に使用されます。
NutanixCEだとCentOSだったら入るだろうと思い設定したら入りました。
インポートが成功すると、Compute Engine→イメージの一覧に表示されます。
Nested可能なインスタンスの作成
- ディスク作成用インスタンスの作成・削除
インポートしたイメージを使用したインスタンスを作成し、NutanixCEの入ったディスクを作成します。
今回はディスクを作成したいだけなので、スペックは問いません。
インスタンス作成時、ブートディスクでインポートしたイメージを選択します。
【インスタンスを削除する際にブートディスクを削除する】のチェックを外してください。
作成したインスタンスを削除して、ディスクだけが残る状態にします。
- Nestedイメージ作成 GCEでNested VMを有効化する為、以下のgcloudコマンドを使用します。
gcloud compute images create <nested-image-name> --source-disk <source-disk-name> --source-disk-zone <source-disk-zone> --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
nested-image-name: 作成される
source-disk-name: 先のインスタンス作成手順で作成されたディスク名
source-disk-zone: 先のインスタンス作成手順で作成されたディスクがあるゾーン(asia-northeast1-aなど)
- Nestedインスタンス作成
ここからNested可能なNutanixCEイメージを使ってインスタンスを作成していきます。
CPUやメモリは要件を満たすよう、適宜設定します。
ブートディスクには先の手順で作ったNested有効化をしたNutanixCEをしていします。
Hot TierとCold Tier用のディスクを追加します。
作成したらインスタンスの編集に入り、「シリアルポート接続を有効化」にチェックをいれます。
Nutanix CE インストール
- SSD化
インスタンスの追加ディスクでSSDを選択しましたが、SSDとの認識になっていません。
その為、コンソール接続をしてrotationalを変更します。
※ローカルSSDスクラッチディスクを選択するとSSD認識がなされますが、インスタンスの停止ができなくなります。
rootでログインして実施します。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk └─sda1 8:1 0 7G 0 part / sdb 8:16 0 200G 0 disk sdc 8:32 0 500G 0 disk echo 0 > /sys/block/sdb/queue/rotational cat /sys/block/sdb/queue/rotational 0 exit
- インストール実行
installでログインし、実行します。
・
・
・
・
・
Installation did not succeed.
Pressto return to the login prompt.
失敗しました。
ログを確認すると、以下のようなところでエラーが出ていました。
FATAL: An exception was raised: Traceback (most recent call last): File "/ce_installer_cUB2wz/phoenix/locale_select.py",line 36, in <module> main() File "/ce_installer_cUB2wz/phoenix/locale_select.py",line 28, in main params = gui.get_params(gui.LocaleGui) File "/ce_installer_cUB2wz/phoenix/gui.py",line 1676, in get_params return run_gui(guitype, args=args) File "/ce_installer_cUB2wz/phoenix/gui.py",line 1758, in run_gui raise e error: init_pair() returned ERR
rootでログインし、中身を確認していると
/home/install/phx_iso/phoenix/gui.py
辺りでエラーが出ているようで、単純にGUIが無い為に発生している模様?
GCPだとSSHかシリアルコンソールでのみ接続可能となる為、
ESXiのNestedのように画面のコンソールが使えない…。
結論
今回のような通常のインポートの手順では、NestedでAHVをインストールする事は難しいと判断しました。
GUI周りでエラーが出ているようだったので、VNCで接続した中でinstallを走らせると動くのかと思い、
別のLINUXインスタンスの追加ディスクとしてマウントした上でpartedによってパーティションを拡張、
拡張したディスクでインスタンスを作成してGUI関連とVNCをインストールしたらどうなるか?
とも考えましたが、そもそもHyperVisorにするべき事ではないのでやめました。
以上から、今回のGCPでのNested AHVのインストールは失敗しました。
次は別の方法でデプロイをして、アップしたいと思います。