Blog
[OpenStack Summit Barcelona 2016] 新卒がミタ! コンテナ技術編
こんにちは!
CIA でインフラエンジニアをしている青山 真也です。
新卒ではありますがインターンや配属後の業務として OpenStack に取り組んでいたことを評価していただき、
トレーナーの makocchi 先輩と一緒に晴れて夢の1つだった OpenStack Summit Barcelona 2016 に参加してきたので、
興味深かったセッションを中心にお話ししたいと思います。
CaaS (Container as a Service) 環境を検討しているということもあり、私はコンテナ周りの話と現状の構成で改善できる話を中心に聞いてきました。
今回はコンテナ編です。(運用改善編はこちら、先輩 OpenStackerと OpenStack コミュニティ編はこちら)
「Live Container Migration on OpenStack」
2016-10-25 (Tuesday) 5:05pm–5:45pm
IBM さんの Container のライブマイグレーションのお話。
VM はエミュレートを行っているため、suspend/resume が簡単に行うことが可能です。
一方で、コンテナはただのプロセスです。
しかし、プロセスは Linux Kernel 的には 3.11 から使えるようになったCRIU (Checkpoint Restore In Userspace) という機能を使うことで、
マイグレーション相当のことができます。
CRIU ではユーザ空間でプロセスの現在のチェックポイントを取得し、その状態をリストアすることが可能となります。
2016/9 〜から Docker Engine に CRIU をサポートする機能をマージし始め、Docker 1.13 あたりから使えるようになる予定とのことでした。
Docker 1.13 で実装される内容としては、checkpoint を作成する機能と、checkpoint を元にコンテナを起動するという2段階の手順が必要になっており、ライブマイグレーションっぽい挙動にするには別途スクリプトが必要な状況となっていました。
1 2 |
docker checkpoint [--keep-running] CONTAINER CHECKPOINT_ID docker start --checkpoint CHECKPOINT_ID CONTAINER |
現時点では下記のような課題が残っているものの、なかなか面白そうでした。
後者2つについては docker export を使って将来的には実装される目処がたっているようです。
・Magnum などでクラスタを作る場合には、CRIU をサポートした VM イメージを使う必要がある
・マイグレーション先と IP が競合する可能性がある(docker0 ブリッジのサブネットが同じ場合があるため)
・現段階ではメモリの状態をコピーするだけで root filesystem はそのままな実装(ボリューム周りの実装が未実装)
・runtime のメタデータが完全に保存されるわけではない(docker inspect の情報)
デモでは、オンメモリ NoSQL の Redis や動画ストリーミングのライブマイグレーションを行っていました。
速度もいい感じで良い印象でした。
「Fujitsu: Monasca Monitoring for Kubernetes – Delivered on OpenStack」
2016-10-26 (Wednesday) 12:15pm–12:55pm
Fujitsu さんが発表した Monasca で Kubernetes の環境をモニタリングしてみたお話でした。
Monasca は Monitoring as a Service をうたっており、Kafca や Influx DB などをを用いた監視サービスを提供するコンポーネントとなっています。
現状の Kubernetes の Dashboard はシンプルで使いやすいのですが、Monasca では更に下記の機能を利用することができるそうです。
- 歴史的なデータが蓄積されている
- 検索
- UI のカスタマイズ
- アラートやトリガーの設定
ログに関しては、Minion ノードに入っている Monasca のエージェントが ログファイルを Monasca サーバに転送しています。
一方、Metrics の収集に関しては Google 社が開発した cAdvisor を利用して Monasca サーバに転送する形になっていました。
Monasca ではアラートやトリガーなどを設定することができるため、
特定のエラーやメトリクスの情報から何かしらのアクションを起こすこともできるようです。
Monasca おなじみの可視化もお手の物ですね。
個人的には OpenStack Monasca を使って作るのがいいのか、
Kafca、Elastic Search、Fluentd、Grafana、cAdvisor、Zabbix あたりを使って自分で作るのがいいのかは悩みどころな気はしましたが、
OpenStack platform で完結するのも美しいですね。
「Multi-Tenancy Kubernetes Container Cluster with OpenStack」
2016-10-27 (Thursday) 3:05pm–3:45pm
Huawei さんが発表していた Kubernetes with OpenStack におけるマルチテナントについてのお話。
CaaS 環境を作るとなると一番問題になるのがマルチテナンシーなので、非常に期待度の高いセッションでした。
今回のシステムの大枠は
- Host: Magnum による Nova と Ironic を使った Minion ノードの構築
- Network: Kuryr + Neutron によるネットワークの制御
- Storage: Fuxi による Cinder と Malina の領域を使ったボリュームのアタッチ
の 3 つから構成されていました。
また、認証周りに関しては Kubernetes 1.3 からは ABAC (Attribute-Based Access Control) が利用可能となり、Keystone Plug-in も利用可能となりました。
これを用いると、Kubernetes の Namespace と OpenStack の Project に対してマッピングすることが可能となり、OpenStack とのインテグレーションが高まります。
結果的には VM と Physical Machine が混在する環境で Kuryr がネットワークを構築し、Fuxi がストレージ領域をアタッチするという構造が実現できていました。
うーん。複雑。だけどしっかりと動いたら素敵な感じですね。
他のセッションでも Kuryr + Fuxi + Container の組み合わせはちょこちょこ見かけたので、OpenStack でやるなら結構定番の構成になりつつあるのかもしれません。
個人的には仮想ネットワークの世界は非常に楽しいのですが、
急にブラックボックスになると運用する時に恐怖しか生まれないためしっかりとアーキテクチャを把握するのが大切だと思っています。
まずはこの構成を検討しつつ OpenStack 力を更に高めなければ…。
「Magnum is Not the OpenStack Containers Service? How about Zun?」
2016-10-27 (Thursday) 9:50am–10:30am
Huawei, IBM, Intel さんらが発表した OpenStack におけるコンテナに関連するコンポーネントのお話です。
Mitaka リリースまでの Magnum では Container Orchestration Engine を使ったクラスタを構築し、
Magnum 経由で Pod、Replication、Service を管理していました。
Newton リリースからは GKE (Google Container Engine) のようにCOE (Container Orchestration Engine) を管理する方針に変わったようです。
これにより、COE の操作については各 COE の CLI、例えば kubectl などを使って操作するか
Zun と呼ばれる OpenStack コンポーネントを使って管理することとなります。
Zun ではコンテナのライフサイクルマネジメントを抽象化しており、API は各コンテナ技術で共通したものを使えるように進めているようです。
また、現時点では Docker を第一目標として進めているようです。
さらに話を聞いていて感じたのは、Nova/VM=Zun/Container となるように綺麗に作ることが目的なのかなと。
ベアメタル環境やVM環境に関わらず、その上でコンテナ環境を作れるようになるのも魅力的ですね。
Demo にありましたが Nova 用の Dashboard に相当する Zun の Dashboard もあるようです。
方針転換によるコンテナ系コンポーネントの発展が楽しみですね。
以上、コンテナ技術編でした!
(運用改善編はこちら、先輩 OpenStackerと OpenStack コミュニティ編はこちら)
Author