1 2016年12月7日 Yahoo! JAPAN {ytatsumi, tasogabe}@yahoo-corp.jp
Kubernetes を使って OpenStack
の運用管理を進化させよう!
KollaKubernetes のご紹介
-Agenda
• Yahoo! JAPAN ご紹介
• OpenStack運用の課題
• Docker(Kolla)で解決出来ること
• Kubernetesで解決できること
2自己紹介 (1)
3
立見 祐介 (Yusuke Tatsumi)
Yahoo! JAPAN にて、production NW構築・ 運用に従事。最近はOpenStackプライベート クラウドの仮想ネットワークの検証・構築を 行なう。
自己紹介(2)
曽我部 崇 (Takashi Sogabe)
Yahoo! JAPAN にて、OpenStackプライベー トクラウドの運用・管理を効率化するための 技術開発に従事
得意技: AWS(OpsWorks, CodeDeploy etc.)
Yahoo! JAPAN ポータルサイト Overview
Yahoo! JAPAN ポータルサイト Overview
6
Monthly Page Views
69+ Billion
http://i.yimg.jp/i/docs/ir/archives/present/2016/jp160728presentation.pdf http://hr.yahoo.co.jp/infographics/
Monthly Page Views (Only Smartphone)
39+ Billion
Apps Total Download
380+ Million
Number of services
100+
0 5 10 15 20 25
1 year ago Half year ago Today
vCPU (x10k) Memory (x10TB) Block (x1PB) 急増するYahoo! JAPAN の ワークロード 急激な利用増加により、Networkを始め安定性の向上が課題となる ”density growth” in HV 7 • YoYでリソース2倍 • 利用増加 • クラスタ数の爆増
OpenStack 運用の課題 (1)
• Juju/MAAS, Triple-O, Fuel
• 初期インストールは簡単になった
• 運用は必ずしも楽にならない
• Security Fix • Update • OpenStack Clusterの成長 8OpenStack 運用の課題 (2)
• OpenStack
• クラウドネイティブアプリを開発・運用 できるプラットフォーム • アプリ開発者は大幅に生産性が向上• OpenStack自体の運用
• 旧来の力技運用(ペットのように扱う) • OpenStack Engineer の生産性は以前 と変わらず 9OpenStack 運用の課題 (3)
• クラウドネイティブの世界
• CI/CDパイプライン
• ELKスタック等へのログ集約、サー ビスのメトリクスモニタリング
• Design for Failure etc.
11
OpenStack CI/CD パイプライン
• CI/CDパイプラインを回すことで、品
質の安定とクラスタの進化を加速
12
Commit Build Unit
Test Deploy System Test Deploy (Prod) Measure/ Validate Production Feedback Tempest Rally Tox
Yahoo! JAPAN の取り組み
• OpenStackのコントローラをKubernetes 上にデプロイする • https://techblog.yahoo.co.jp/infrastructure/os_on _k8s/ • OpenStack の Controller 部分を k8s 上 に載せるのは難しくない • ただし、プロダクションレベルでの運用や Compute / Network ノードを扱うには 様々な考慮が必要 13Kolla
Kolla
• Docker を用いて OpenStack の
CI/CDプロセスを実現
• Mission Statement
• Kolla provides production-ready containers and deployment tools for operating OpenStack clouds.
Kolla メリット
• Deployが簡単
• Docker Container を用いて素早く Deploy• 運用が簡単
• Ansible を用いたコンフィグ管理 16Kolla Architecture
17 OpenStack Service Containers Infrastructure Engineering CI CD Ansible Registry Docker OS cgroups namespaces Host #nQuick Start Guide (1)
• Vagrant + VirtualBox
• http://docs.openstack.org/develo per/kolla/vagrant-dev-env.html
Quick Start Guide (2)
19
$ git clone -b stable/newton
https://github.com/openstack/kolla kolla-newton
$ cd kolla-newton/dev/vagrant $ vi Vagrantfile.custom
Quick Start Guide (3)
20 PROVIDER="virtualbox" PROVIDER_DEFAULTS = { virtualbox: { centos: {bridge_interface: "en0: Wi-Fi (AirPort)", base_image: "centos/7", sync_method: “virtualbox", kolla_path: "/home/vagrant/kolla" } } }
Quick Start Guide (4)
• Guest OS に CentOS(Default)を使う
場合は、次の patch を Vagrantfile
に当てる必要があります。
• masterでは修正済 21 $ cd /path/to/kolla-newton/dev/vagrant $ patch_id=dcb102608d05d20c58c7340f948c94dd4b6da971 $ git diff $patch_id^ $patch_id > 00patch.txtQuick Start Guide (5)
• Vagrant および VirtualBox をイ
ンストールした後に、次のプラグ
インをインストール
22
$ vagrant plugin install vagrant-hostmanager vagrant-vbguest
Quick Start Guide (6)
• Image のビルド
23
$ kolla-build
• Image のデプロイ
Quick Start Guide (7)
• RDO の version 指定をするには?
• /etc/kolla/kolla-build.conf 内に rpm_setup_config を指定する 24 rpm_setup_config = http://trunk.rdoproject.org/centos7-mitaka/current/delorean.repo,http://trunk.rdoproject.org/c entos7-mitaka/delorean-deps.repo /etc/kolla/kolla-build.conf (mitaka 例)Kolla Notes
• Ocata(次期リリース)以降、Kolla は
“Kolla” および “Kolla-Ansible” の2
つに分離される
• Kolla • Docker image のビルド • Kolla-Ansible• Docker image のデプロイ (Ansible)
Kolla Design (1)
• Node type毎に deployされるサービスが異なる
• Controller • APIやDB等、OpenStack Controller • Network • neutron-agent • Compute • nova-compute • Storage
• cinder volume (LVM or ceph-osd)
Kolla Design (2)
• Docker の設定
• Networking
• net=host が用いられる
• Storage
• Storage Driver: defaultの devicemapper だ とI/O性能が出ないため、aufs または btrfs への変更が推奨されている
• Docker host 上の /var/lib/docker 以下に ボリュームが保存される
Kolla Design (3)
• Under Cloud の構築 • Bifrost • スタンドアロンで動作する Ironic • kolla-ansible コマンドにて deploy できる • http://docs.openstack.org/developer/koll a/bifrost.html • MAAS, Cobbler • Docker Host を構築するだけで良いため、 比較的簡単に作りこめるはず 28Kolla が向いているケース
• OpenStack クラスタサイズが頻繁
に増加しないと見込まれる環境
• DockerでCI/CDを回したい • Ansible を用いたインベントリ管理 で十分 • 今すぐ使いたい 29Kolla-Kubernetes
(Kolla-k8s)
Kolla-Kubernetes
• Kolla-Kubernetes (Kolla-k8s)
• Kolla Container を Kubernetes上 で動かす
Kubernetes が得意なこと
• Statelessなアプリの運用管理
• Front: Nginx、Backend: RDSや
DynamoDB 等のクラウドサービス 環境にフィットする
• Scale Up, Scale Down • Rolling Upgrade
Kubernetes が苦手なこと
• Stateful なアプリの運用管理
• MySQL や RabbitMQ のように、バック エンドストレージが必要であったりノー ドの追加・削除に別途ロジックが必要 なものは 実装に工夫が必要• 特定ホスト上に固定して実行する必
要があるアプリ
33OpenStack on k8s
• 苦手な Statefulアプリをうまく料
理できれば、Kubernetesの良さ
(Scalability, Manageability)を
OpenStackでも味わえる!
• MySQL • RabbitMQ 34Kolla-Kubernetes の特徴
• Stateful component (MySQL,
RabbitMQ) を扱える
• nova-compute を扱える
• Workflow tool の形で提供される
• Ansible (~Newton) • Operators/Helm (Ocata~) 35Quick Start Guide
• 2016/11現在、Quick Start(Vagrant
等) する方法はありません
• Ocataリリースに向けてアーキテク
チャの全面刷新を進めています
• 2016/11現在、動作するコードは
master上にありません
36Kolla-k8s Design (Ocata)
http://bit.ly/2gx9J0Z • Kubernetes Operators • http://bit.ly/2eEVYs2 • Stateful ソフトウェア等、複雑なオペレーショ ンが必要なアプリを k8s 上で運用するため のロジックを実装 • Helm Package • http://bit.ly/2gx9KCf • k8s package manager 37Kolla-k8s Design
• Under Cloud(k8s cluster) の構築
• Public Cloud(AWS, GCE)向けの Deployment Tool は充実している • kube-deploy • kops • Bare Metal でも使えそうなものは少ない • halcyon-kubernetes • Juju/MAAS 38
Kolla-k8s 課題 (1)
• Kubernetes cluster の安定運用 • cluster 自体の upgrade ができる? • High Availability 構成で運用できる? • 適切にclusterを構成しないと、新たな複雑さ を OpenStack にもたらすだけになる • 安定運用できれば、OpenStack をk8s上に載 せることで Scalability, Manageability のメリッ トが得られる• OpenStack Controller のみ Public Cloud上に
デプロイするのは良い考えかもしれない
Kolla-k8s 課題 (2)
• Kolla-k8s には課題が沢山
• ご興味がある人は、是非contribute してください! • https://blueprints.launchpad.net/k olla-kubernetes 40まとめ
• Kolla や Kolla-Kubernetes を使う
と得られるメリット
• OpenStack をクラウドネイティブア プリのように開発・運用できる • Kolla-kubernetes についてはOcata に向けて開発進行中 41参考情報
OpenStack on Kubernetes (1)
• Fuel CCP
• https://github.com/openstack/fuel-ccp • Document • http://fuel-ccp.readthedocs.io/en/latest/ 43OpenStack on Kubernetes (2)
• Stackanetes
• https://github.com/stackanetes/sta ckanetes
• Newtonにて、 tech review がリリース された
• http://bit.ly/2gASprT
• コンテナエンジン: rkt