45
1 2016年12月7日 Yahoo! JAPAN {ytatsumi, tasogabe}@yahoo-corp.jp Kubernetes を使って OpenStack の運用管理を進化させよう! - Kolla-Kubernetes のご紹介 -

Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

  • Upload
    builiem

  • View
    255

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

1

2016年12月7日

Yahoo! JAPAN

{ytatsumi, tasogabe}@yahoo-corp.jp

Kubernetes を使って OpenStack

の運用管理を進化させよう!

- Kolla-Kubernetes のご紹介 -

Page 2: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Agenda

• Yahoo! JAPAN ご紹介

• OpenStack運用の課題

• Docker(Kolla)で解決出来ること

• Kubernetesで解決できること

2

Page 3: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

自己紹介 (1)

3

立見 祐介 (Yusuke Tatsumi)

Yahoo! JAPAN にて、production NW構築・運用に従事。最近はOpenStackプライベートクラウドの仮想ネットワークの検証・構築を行なう。得意技: ケーブリング(物理・仮想)

Page 4: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

自己紹介(2)

曽我部 崇 (Takashi Sogabe)

Yahoo! JAPAN にて、OpenStackプライベートクラウドの運用・管理を効率化するための技術開発に従事

得意技: AWS(OpsWorks, CodeDeploy etc.)

4

Page 5: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Yahoo! JAPAN ポータルサイト Overview

5

Page 6: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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+

OpenStack Private Cloud でも、主要なサービスを提供中!

Page 7: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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倍• 利用増加• クラスタ数の爆増

Page 8: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack 運用の課題 (1)

• Juju/MAAS, Triple-O, Fuel• 初期インストールは簡単になった

• 運用は必ずしも楽にならない• Security Fix• Update• OpenStack Clusterの成長

8

Page 9: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack 運用の課題 (2)

• OpenStack• クラウドネイティブアプリを開発・運用

できるプラットフォーム• アプリ開発者は大幅に生産性が向上

• OpenStack自体の運用• 旧来の力技運用(ペットのように扱う)• OpenStack Engineer の生産性は以前

と変わらず

9

Page 10: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack 運用の課題 (3)

• クラウドネイティブの世界• CI/CDパイプライン• ELKスタック等へのログ集約、サー

ビスのメトリクスモニタリング• Design for Failure etc.

10

Page 11: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

11

UPDATE OpenStack運用管理

Page 12: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack CI/CD パイプライン

• CI/CDパイプラインを回すことで、品質の安定とクラスタの進化を加速

12

Commit BuildUnit

TestDeploy

System

Test

Deploy

(Prod)

Measure/

Validate

Production Feedback

TempestRallyTox

Page 13: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Yahoo! JAPAN の取り組み

• OpenStackのコントローラをKubernetes上にデプロイする• https://techblog.yahoo.co.jp/infrastructure/os_on

_k8s/

• OpenStack の Controller 部分を k8s 上に載せるのは難しくない

• ただし、プロダクションレベルでの運用やCompute / Network ノードを扱うには様々な考慮が必要

13

Page 14: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla

14

Page 15: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla

• Docker を用いて OpenStack のCI/CDプロセスを実現

• Mission Statement• Kolla provides production-ready

containers and deployment tools for operating OpenStack clouds.

15

Page 16: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla メリット

• Deployが簡単• Docker Container を用いて素早く

Deploy

• 運用が簡単• Ansible を用いたコンフィグ管理

16

Page 17: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla Architecture

17

OpenStack

Service Containers

Infrastructure Engineering

CI

CD

Ansible Registry

Docker

OScgroups namespaces

Host #n

Page 18: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Quick Start Guide (1)

• Vagrant + VirtualBox• http://docs.openstack.org/develo

per/kolla/vagrant-dev-env.html

18

Page 19: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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

$ vagrant up

Page 20: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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"

}

}

}

Vagrantfile.custom: (Mac + VirtualBoxの例)

Page 21: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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.txt

$ patch -p4 < 00patch.txt

Page 22: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Quick Start Guide (5)

• Vagrant および VirtualBox をインストールした後に、次のプラグインをインストール

22

$ vagrant plugin install vagrant-hostmanager vagrant-vbguest

Page 23: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Quick Start Guide (6)

• Image のビルド

23

$ kolla-build

• Image のデプロイ

$ sudo kolla-ansible deploy

Page 24: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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 例)

Page 25: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla Notes

• Ocata(次期リリース)以降、Kolla は“Kolla” および “Kolla-Ansible” の2つに分離される• Kolla• Docker image のビルド

• Kolla-Ansible• Docker image のデプロイ (Ansible)

25

Page 26: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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

Page 27: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla Design (2)

• Docker の設定• Networking• net=host が用いられる

• Storage• Storage Driver: defaultの devicemapper だ

とI/O性能が出ないため、aufs または btrfsへの変更が推奨されている

• Docker host 上の /var/lib/docker 以下にボリュームが保存される

27

Page 28: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla Design (3)

• Under Cloud の構築• Bifrost• スタンドアロンで動作する Ironic• kolla-ansible コマンドにて deploy できる• http://docs.openstack.org/developer/koll

a/bifrost.html• MAAS, Cobbler• Docker Host を構築するだけで良いため、

比較的簡単に作りこめるはず

28

Page 29: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla が向いているケース

• OpenStack クラスタサイズが頻繁に増加しないと見込まれる環境• DockerでCI/CDを回したい• Ansible を用いたインベントリ管理

で十分• 今すぐ使いたい

29

Page 30: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla-Kubernetes

(Kolla-k8s)

30

Page 31: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla-Kubernetes

• Kolla-Kubernetes (Kolla-k8s)• Kolla Container を Kubernetes上

で動かす

31

Page 32: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kubernetes が得意なこと

• Statelessなアプリの運用管理• Front: Nginx、Backend: RDSや

DynamoDB 等のクラウドサービス環境にフィットする

• Scale Up, Scale Down• Rolling Upgrade

32

Page 33: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kubernetes が苦手なこと

• Stateful なアプリの運用管理• MySQL や RabbitMQ のように、バック

エンドストレージが必要であったりノードの追加・削除に別途ロジックが必要なものは 実装に工夫が必要

• 特定ホスト上に固定して実行する必要があるアプリ

33

Page 34: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack on k8s

• 苦手な Statefulアプリをうまく料理できれば、Kubernetesの良さ(Scalability, Manageability)をOpenStackでも味わえる!• MySQL• RabbitMQ

34

Page 35: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla-Kubernetes の特徴

• Stateful component (MySQL, RabbitMQ) を扱える

• nova-compute を扱える• Workflow tool の形で提供される

• Ansible (~Newton)• Operators/Helm (Ocata~)

35

Page 36: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Quick Start Guide

• 2016/11現在、Quick Start(Vagrant等) する方法はありません

• Ocataリリースに向けてアーキテクチャの全面刷新を進めています

• 2016/11現在、動作するコードはmaster上にありません

36

Page 37: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

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

Page 38: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla-k8s Design

• Under Cloud(k8s cluster) の構築• Public Cloud(AWS, GCE)向けの

Deployment Tool は充実している• kube-deploy• kops

• Bare Metal でも使えそうなものは少ない• halcyon-kubernetes• Juju/MAAS

38

Page 39: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla-k8s 課題 (1)

• Kubernetes cluster の安定運用• cluster 自体の upgrade ができる?• High Availability 構成で運用できる?• 適切にclusterを構成しないと、新たな複雑さ

を OpenStack にもたらすだけになる• 安定運用できれば、OpenStack をk8s上に載

せることで Scalability, Manageability のメリットが得られる• OpenStack Controller のみ Public Cloud上に

デプロイするのは良い考えかもしれない

39

Page 40: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

Kolla-k8s 課題 (2)

• Kolla-k8s には課題が沢山• ご興味がある人は、是非contribute

してください!• https://blueprints.launchpad.net/k

olla-kubernetes

40

Page 41: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

まとめ

• Kolla や Kolla-Kubernetes を使うと得られるメリット• OpenStack をクラウドネイティブア

プリのように開発・運用できる• Kolla-kubernetes についてはOcata

に向けて開発進行中41

Page 42: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

参考情報

42

Page 43: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack on Kubernetes (1)

• Fuel CCP• https://github.com/openstack/fuel-ccp

• Document• http://fuel-ccp.readthedocs.io/en/latest/

43

Page 44: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack on Kubernetes (2)

• Stackanetes• https://github.com/stackanetes/sta

ckanetes• Newtonにて、 tech review がリリース

された• http://bit.ly/2gASprT

• コンテナエンジン: rkt

44

Page 45: Yahoo! JAPAN OpenStack Docker(Kolla)で解決出来 …€¢ Ansible を用いたコンフィグ管理 16 Kolla Architecture 17 OpenStack Service Containers Infrastructure Engineering

OpenStack on Kubernetes (3)

• OpenStack-helm• https://github.com/sapcc/openst

ack-helm• Helm を用いて OpenStack を

Deploy できる

45