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 の準備

  1. Nutanix CEダウンロード
    Nutanixでアカウント登録を行い、
    Download Nutanix CE, Docs, and Guides | Nutanix Community より Community Edition をダウンロードします。
    今回は「ce-2018.05.01-stable.img.gz」でした。

  2. インポート用のプロジェクトを準備
    手順は省略しますが、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→イメージの一覧に表示されます。
f:id:daisuke-jp:20181220101854p:plain

Nested可能なインスタンスの作成

  1. ディスク作成用インスタンスの作成・削除 インポートしたイメージを使用したインスタンスを作成し、NutanixCEの入ったディスクを作成します。
    今回はディスクを作成したいだけなので、スペックは問いません。
    インスタンス作成時、ブートディスクでインポートしたイメージを選択します。
    f:id:daisuke-jp:20181220103954p:plain

【インスタンスを削除する際にブートディスクを削除する】のチェックを外してください。

作成したインスタンスを削除して、ディスクだけが残る状態にします。

  1. 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など)

  1. Nestedインスタンス作成
    ここからNested可能なNutanixCEイメージを使ってインスタンスを作成していきます。

CPUやメモリは要件を満たすよう、適宜設定します。
f:id:daisuke-jp:20181220110237p:plain

ブートディスクには先の手順で作ったNested有効化をしたNutanixCEをしていします。
f:id:daisuke-jp:20181220111207p:plain

Hot TierとCold Tier用のディスクを追加します。
f:id:daisuke-jp:20181220112100p:plain f:id:daisuke-jp:20181220112109p:plain

作成したらインスタンスの編集に入り、「シリアルポート接続を有効化」にチェックをいれます。

Nutanix CE インストール

  1. 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
  1. インストール実行
    installでログインし、実行します。





    Installation did not succeed.
    Press to 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のインストールは失敗しました。

次は別の方法でデプロイをして、アップしたいと思います。

このブログの人気の投稿

AnacondaとPythonのインストール(python2とpython3の共存)とDjango

PyCharmでAnaconda(Python)とDjangoの開発環境を構築する  その2