OpenStack Zunでコンテナを動かすメモ
基本的にはDeveloper Quick-Startを参照すればコンテナを起動することができます。 今回はcirros以外のイメージを登録して動かしてみたかったので、実際にやってみたメモ。
準備
DevStackで環境構築をしています。 DevStack自体の構築はQuick Startの通りです。
DevStackのインストール
まずsudo権限を持つユーザーstack
を作成します。
$ sudo useradd -s /bin/bash -d /opt/stack -m stack $ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
次にstack
になりDevStackのインストールを行います。
$ sudo su - stack
$ git clone https://git.openstack.org/openstack-dev/devstack
$ cd devstack
local.conf
はdevstack/samples
にあるものを使用します。
$ cp samples/local.conf .
自分の環境に合わせてlocal.conf
を編集します。
Zunの設定
local.conf
にzunのための設定を追加します。kuryr-libnetwork
はdockerにおいてOpenStackのネットワークを利用するためのプラグインであり、
Zunからネットワーク関連の設定を行うために必要となります。
enable_plugin zun https://git.openstack.org/openstack/zun enable_plugin zun-tempest-plugin https://git.openstack.org/openstack/zun-tempest-plugin #This below plugin enables installation of container engine on Devstack. #The default container engine is Docker enable_plugin devstack-plugin-container https://git.openstack.org/openstack/devstack-plugin-container # In Kuryr, KURYR_CAPABILITY_SCOPE is `local` by default, # but we must change it to `global` in the multinode scenario. KURYR_CAPABILITY_SCOPE=global KURYR_ETCD_PORT=2379 KURYR_PROCESS_EXTERNAL_CONNECTIVITY=False enable_plugin kuryr-libnetwork https://git.openstack.org/openstack/kuryr-libnetwork # install python-zunclient from git LIBS_FROM_GIT="python-zunclient" # Optional: uncomment to enable the Zun UI plugin in Horizon enable_plugin zun-ui https://git.openstack.org/openstack/zun-ui
stack.shの実行
これでZunをインストールする準備ができました。次の様にしてKeystoneやNova、Neutronなどともに Zunがインストールされます。
$ cd /opt/stack/devstack
$ ./stack.sh
stack.sh
が正常に終了すると、stack
のホームディレクトリに各サービスのリポジトリが配置されていることが確認できます。
$ ls /opt/stack
horizon python-zunclient bin cinder keystone
kuryr tempest devstack kuryr-libnetwork
...
コンテナイメージの作成と起動
Zunの設定が完了したので、次にコンテナを登録して起動できるようにします。
まずはじめにターミナルからOpenStackの操作ができるよう、admin
としてセットアップを行います。
$ source /opt/stack/devstack/openrc admin admin
コンテナイメージの作成
OpenStackに登録するコンテナを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE scratch latest 23419253ba9b 3 days ago 0 B <none> <none> a8a4757ee650 5 days ago 0 B ... ubuntu 16.04 7aa3602ab41e 3 weeks ago 115 MB <none> <none> 7133c2c42ed4 3 weeks ago 0 B ...
ここではdockerイメージubuntu:16.04
を用いてOpenStackのコンテナイメージを作成します。
もし自身の環境にこのイメージが存在しない場合はdocker pull
により取得して下さい。
docker save
コマンドの引数としてubuntu
を指定し、
これをopenstack image create
に渡すことによりイメージを作成することができます。
この例ではコンテナイメージの名前をmycontainer
としています。
$ docker save ubuntu | openstack image create mycontainer --public \ --container-format docker --disk-format raw
openstack image list
によりイメージの一覧を参照すると、mycontainer
が登録されていることが確認できます。
$ openstack image list +--------------------------------------+--------------------------+--------+ | ID | Name | Status | +--------------------------------------+--------------------------+--------+ | 0fe13767-ebec-4fed-90de-b4868d89d659 | cirros-0.3.5-x86_64-disk | active | | 3ba9f988-5ae0-46a7-880d-71c5c659c460 | mycontainer | active | +--------------------------------------+--------------------------+--------+
コンテナの起動
それではこのイメージを用いてコンテナを起動してみましょう。
Developer Quick-Start
ではping -c 4 8.8.8.8
を実行して動作を確認していますが、ubuntu
ではpingが無いため
代わりに/bin/bash
を実行してみます。
bashでの操作を行うために--interactive
を指定します。
また起動するコンテナの名前は--name test
として指定します。
zun run --image-driver glance \ --name test \ --interactive \ mycontainer /bin/bash
起動が成功すると、実行結果が表示された後に以下の様なメッセージが表示されるので
Enterを押してbashに移行します。終了するにはexit
を実行します。
... Waiting for container start Waiting for container start connected to 865323fc-f74f-49db-b8ef-abc0d31c62dd, press Enter to continue type ~. to disconnect root@9aefd148f29c:/# ... root@9aefd148f29c:/# exit
bashを抜けた後もコンテナは引き続き動作しています。zun list
により状態を確認することができます。
$ zun list +--------------------------------------+------+-------------+---------+------------+--------------------------+-------+ | uuid | name | image | status | task_state | addresses | ports | +--------------------------------------+------+-------------+---------+------------+--------------------------+-------+ | 865323fc-f74f-49db-b8ef-abc0d31c62dd | test | mycontainer | Running | None | 172.24.4.19, 2001:db8::5 | [] | +--------------------------------------+------+-------------+---------+------------+--------------------------+-------+
なお--image-driver glance
を指定しないと登録したイメージを参照することができずにエラーとなるため注意して下さい。
$ zun run --name test --interactive mycontainer /bin/bash ERROR: Image mycontainer could not be found. (HTTP 400) (Request-ID: req-79fe7422-9db4-40bb-b3e7-8bd58dcf4e05)
最後にコンテナを停止して、削除を行います。
$ zun stop test Request to stop container test has been accepted. $ zun delete test Request to delete container test has been accepted.
zun list
コマンドにより削除されていることが分かります。
$ zun list
+------+------+-------+--------+------------+-----------+-------+
| uuid | name | image | status | task_state | addresses | ports |
+------+------+-------+--------+------------+-----------+-------+
+------+------+-------+--------+------------+-----------+-------+