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