+ All Categories
Home > Documents > Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager...

Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager...

Date post: 29-Aug-2019
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
68
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. Dec 7, 2017 1 ヤフー株式会社 システム統括本部 サイトオペレーション本部 北田駿也 木下裕太 Yahoo! JAPANにおける OpenStack on Kubernetes導入までの道のり
Transcript
Page 1: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Dec 7, 2017

1

ヤフー株式会社 システム統括本部 サイトオペレーション本部

北田駿也 木下裕太

Yahoo! JAPANにおける

OpenStack on Kubernetes導入までの道のり

Page 2: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Who are we?北田 駿也(Shunya Kitada)

• 2013年からヤフーのOpenStackチームに所属

• OpenStackと社内システムの開発

• OpenStackのデプロイシステムの開発

2

木下 裕太(Yuta Kinoshita)

• 2015年からヤフーのOpenStackチームに所属

• OpenStackの運用に従事

• Kubernetesの技術調査や構築

Page 3: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アジェンダ

• Yahoo! JAPANのプライベートクラウド

• 変化と課題

• OpenStack on Kubernetesによる解決

• Kubernetesによってもたらされるメリット

• OpenStack on Kubernetes

• 構成、監視

• まとめ

3

Page 4: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アンケート

OpenStack知ってる人?

使ったことある人?

開発で使ってる人?

プロダクションで使ってる人?

4

Page 5: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アンケート

Kubernetes知ってる人?

使ったことある人?

開発で使ってる人?

プロダクションで使ってる人?

5

Page 6: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANの

プライベートクラウド

Page 7: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Yahoo! JAPANのプライベートクラウド

• クラウド基盤 : OpenStack

• 稼働時期 : 2011(In House)~

2013(OpenStack)〜

• クラスタ数 : 60以上

• OpenStackバージョン : Grizzly〜Mitaka

• HV数 : 7,000以上

• VM数 : 100,000以上

7

Page 8: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

サービスドメイン on OpenStack

• EC系

• 決済/金融系

• メディア系

• 会員系

• 広告系

• 社内プラットフォーム系

• etc...

8

ミッションクリティカルなシステム多数これら多くのサービスでプライベートクラウドを利用

Page 9: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

インスタンス利用目的の変化と課題

9

2013 2014 2015 2016

既存のベアメタルをVMへ置き換えたい

クラウドネイティブなアーキテクチャを採

用したい

システム毎の要件にマッチするクラスタが

欲しい

PaaSの基盤として使いたい

本番環境のリリース クラスタ増設 個別要件にマッチしたクラスタの構築

プラットフォーム毎の要件に対応したクラスタの構築

ユーザの要望

クラウドチームの対応

Page 10: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

インスタンス利用目的の変化と課題

10

2013 2014 2015 2016

既存のベアメタルをVMへ置き換えたい

クラウドネイティブなアーキテクチャを採

用したい

システム毎の要件にマッチするクラスタが

欲しい

PaaSの基盤として使いたい

本番環境のリリース クラスタ増設 個別要件にマッチしたクラスタの構築

プラットフォーム毎の要件に対応したクラスタの構築

ユーザの要望

クラウドチームの対応

クラスタ数の増加OpenStack APIの障害範囲が拡大

Page 11: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

クラスタ数の増加によって

11

OpenStackCluster

OpenStackCluster

OpenStackCluster

OpenStackCluster

OpenStackCluster

OpenStackCluster

OpenStackクラスタの障害を自動で復旧させたいクラスタの構築・更新を完全に自動化したい

障害対応新規構築

検証等

運用者

Page 12: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

障害アラートと問い合わせ

12

障害アラート件数の推移 問い合わせ件数の推移

H

L

Page 13: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

プラットフォームの基盤となったことで

• OpenStackAPIのアクセス数が激増• プラットフォームがシステムの健全性を確認する

• 高い頻度のインスタンスの作成と削除

• OpenStackAPIの障害の深刻化• APIがダウンしている場合にプラットフォームが期待

した動作ができない可能性

• 場合によってはプラットフォーム上のAppに影響がある可能性

13

従来用途クラスタ

プラットフォーム基盤のクラスタ

APIのアクセス数

今まで以上に安定したOpenStackの提供OpenStackのワークフローレベルでの健全性を担保

Page 14: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

現在の課題

• クラスタ数増加による障害の増加

• 障害の自動復旧が必要

• クラスタの構築・更新を自動化する必要がある

• OpenStackの障害範囲がプラットフォームまで拡大する

• 今まで以上に正常な動作が求められる

• ワークフローレベルでの正常性担保が必要

• インスタンスが立つか?

• ボリュームがアタッチできるか?

14

Page 15: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

課題に対する解決策

Page 16: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

課題に対する解決策

• 障害の自動復旧

• OpenStackクラスタの構築・更新を自動化

• ワークフローレベルの正常性担保

16

Page 17: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

課題に対する解決策

• 障害の自動復旧

• OpenStackクラスタの構築・更新を自動化

• ワークフローレベルの正常性担保

17

人によるオーケストレーションではなく、システムによるオーケストレーションが必要

Page 18: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

課題に対する解決策

• 障害の自動復旧

• OpenStackクラスタの構築・更新を自動化

• ワークフローレベルの正常性担保

18

人によるオーケストレーションではなく、システムによるオーケストレーションが必要

Page 19: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetes

19

コンテナのオーケストレーションツール

• コンテナのデプロイ、スケジューリング• ヘルスチェック• オートヒール、オートスケール• ロードバランシング

マイクロサービスの管理に適する

Page 20: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの用語

20

nova-api

nova.conf

Pod Pod

nova.example.com

Ingress

nova-api-service

Configmap

nova.conf

Deployment

nova-api-deployment

マウント

Service

Page 21: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの用語

21

Pod複数のコンテナをまとめたもの

nova-api

nova.conf

Pod Pod

nova.example.com

Ingress

nova-api-service

Configmap

nova.conf

Deployment

nova-api-deployment

マウント

Service

Page 22: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの用語

22

DeploymentRolling Updateを可能にするReplicaSetを管理し、Podの数を一定に保とうとする。

nova-api

nova.conf

Pod Pod

nova.example.com

Ingress

nova-api-service

Configmap

nova.conf

Deployment

nova-api-deployment

マウント

Service

Page 23: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの用語

23

ServicePodをグルーピングしたものに対してのアクセス方法を定義する nova-api

nova.conf

Pod Pod

nova.example.com

Ingress

nova-api-service

Configmap

nova.conf

Deployment

nova-api-deployment

マウント

Service

Page 24: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの用語

24

IngressL7ルーティングを柔軟に設定できる

nova-api

nova.conf

Pod Pod

nova.example.com

Ingress

nova-api-service

Configmap

nova.conf

Deployment

nova-api-deployment

マウント

Service

Page 25: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの用語

25

Configmap

Configmapconfigなどの設定情報をKubernetesクラスタ内で共有できる

nova-api

nova.conf

Pod Pod

nova.example.com

Ingress

nova-api-service

nova.conf

Deployment

nova-api-deployment

マウント

Service

Page 26: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

障害復旧を自動化

26

!

自動復旧

Kubernetes nodes

!

Kubernetes nodes

自動復旧

Page 27: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

コンテナ毎の正常性担保

27

Liveness probe

HTTP/GET

Kubernetes nodesKubernetes nodes

削除Timeout

再作成

自動復旧

Page 28: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

定義書によるデプロイ

28

Image → Pike

Replicas → 2

Routing

Mount...etc

NovaのversionはPikeでNova APIのPodは2つでnova.confをマウントして外からはこのドメインでアクセスさせて

nova-api

nova.conf

Pod Pod

Service

nova.example.com

Ingress

nova-api-service

Manifest

APIを叩いてdeploy

Page 29: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Helm

29

Kubernetesのパッケージマネージャ

• DeploymentやServiceのManifestをChartという形でパッケージング

• テンプレートエンジンを持つ(Valuesという設定値を上書き可能)

• Chartでデプロイを管理可能(バージョニング機能)

Page 30: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Helm

30

Pod

Service

Ingress

Configmap

Deployment

Pod

ChartValues

Manifestのテンプレート

テンプレートへ埋め込む値

アプリケーションをconfig等も含めた形で管理versioningによる、upgrade/downgradeも可能に

helm install

helm upgrade

helm downgrade

Page 31: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on Kubernetes

• OpenStackをKubernetes上で動かせば…

• 障害の自動復旧

• 個々のコンポーネントの正常性監視

• デプロイの簡略化

31

Page 32: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on Kubernetes

• OpenStackをKubernetes上で動かせば…

• 障害の自動復旧

• 個々のコンポーネントの正常性監視

• デプロイの簡略化

• しかし、Kubernetesのみではできないこともある

• ワークフローの正常性監視

• デプロイの完全自動化

32

Page 33: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on Kubernetes

• OpenStackをKubernetes上で動かせば…

• 障害の自動復旧

• 個々のコンポーネントの正常性監視

• デプロイの簡略化

• しかし、Kubernetesのみではできないこともある

• ワークフローの正常性監視

• デプロイの完全自動化

33

Kubernetesの機能をうまく利用することで実現ができそう

Page 34: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on

Kubernetes

Page 35: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on Kubernetes

• 構成・デプロイ

• 監視

35

Page 36: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on

Kubernetes

構成

Page 37: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

構成の方針

• ステートレスなサービスはKubernetes上へ

• 各API: Keystone, Glance, Nova, …

• 準ステートレスなサービスもKubernetes上へ

• (データが消えてもいいもの)

• RabbitMQ, Memcache

• ステートフルなサービスはコンテナ化しない

• DB, Glance Backend(Swift)

• Libvirt

37

Page 38: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.38

Kubernetes NodesOpenStack Controller

OpenStack Compute Nodes

仮想マシン (qemu process)

MySQL Swift

keystone

ステートレス

ステートフル

neutron

cinder

RabbitMQ

ingress-controller

neutron-agent

nova-compute

horizon

glance

nova

libvirtd

Page 39: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

デプロイの方針

• 人の手でのデプロイは最初のみ

• その後のデプロイは自動

• Gitでソース管理、クラスタ構成を一元管理

• 最新の変更を常に、クラスタへ自動反映する

39

Page 40: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

デプロイに必要なもの

40

nova-api

nova.conf

PodContianer

Configmap

Deployment

Pod

nova-api

Service

nova.example.com

Ingress

Docker Image

Docker Registry

helm install

Dockerfile Chart Values

Page 41: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

デプロイに必要なもの

41

nova-api

nova.conf

PodContianer

Configmap

Deployment

Pod

nova-api

Service

nova.example.com

Ingress

Docker Image

Docker Registry

helm install

Dockerfile Chart Values

Page 42: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

デプロイに必要なもの

42

nova-api

nova.conf

PodContianer

Configmap

Deployment

Pod

nova-api

Service

nova.example.com

Ingress

Docker Image

Docker Registry

helm install

Dockerfile Chart Values

Page 43: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

デプロイに必要なもの

43

nova-api

nova.conf

PodContianer

Configmap

Deployment

Pod

nova-api

Service

nova.example.com

Ingress

Docker Image

Docker Registry

helm install

Dockerfile Chart Values

Page 44: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack Deploy Manager

• 以下の機能を実現するために内製した

• HelmによるOpenStackの自動デプロイ

• HelmによるOpenStackのコンフィグ等の自動アップデート

• Deploy Manager自身もHelmで管理される

• Kubernetes上で動作する

44

Page 45: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

初回構築時のフロー

45

Valuesクラスタ固有の値

OpenStack chart

構築時に準備するもの

Page 46: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

初回構築時のフロー

46

deploy-manager

values.yaml

Valuesクラスタ固有の値

OpenStack chart

bootstrap-keystone.sh

bootstrap-nova.sh

PodHelmを利用してdeploy-managerをKubernetes上に展開

Page 47: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

初回構築時のフロー

47

自動でdeploy-managerがKubernetes上にOpenStackを展開する

nova-api

nova.conf

Pod

keystone

keytone.conf

Pod

deploy-manager

values.yaml

bootstrap-keystone.sh

bootstrap-nova.sh

helm install

Pod

Page 48: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

初回構築時のフロー

48

OpenStackクラスタが完成

nova-api

nova.conf

Pod

keystone

keytone.conf

Pod

deploy-manager

values.yaml

Pod

Page 49: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アップデートのフロー

49

nova-api

nova.conf

Pod

Values

クラスタ固有の値

nova.confを変えたい!

deploy-manager

values.yaml

Pod

Page 50: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アップデートのフロー

50

新しい設定値をGHEへPush

nova-api

nova.conf

Pod

Values

クラスタ固有の値

NEW

deploy-manager

values.yaml

Pod

Page 51: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アップデートのフロー

51

Jenkinsがdeploy-managerをhelm upgradeする

nova-api

nova.conf

Pod

Values

クラスタ固有の値

NEW

deploy-manager

values.yaml

deploy-manager

values.yaml NEW

Pod Pod

Page 52: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

アップデートのフロー

52

deploy-managerがbootstrapスクリプトが再実行して、configのアップデートがあったOpenStackコンポーネントはRolling Updateする

nova-api

nova.conf

Pod Pod

nova-api

nova.conf

Rolling Update

openstack

deploy-manager

values.yaml

openstack

deploy-manager

values.yaml

NEW

NEW

bootstrap-nova.sh

Pod Pod

Upgrade

Page 53: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

コントローラ以外のデプロイ

OpenStack(コントローラ) on Kubernetesはできた!

それ以外は、どうやってデプロイする?

• Kubernetesのデプロイ

• OpenStackコンピュートのデプロイ

53

Page 54: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

コントローラ以外のデプロイ

OpenStack(コントローラ) on Kubernetesはできた!

それ以外は、どうやってデプロイする?

• Kubernetesのデプロイ

• OpenStackコンピュートのデプロイ

54

Chef

Chef

Page 55: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

コントローラ以外のデプロイ

55

kubelet

chef-client

chef-server

kubelet

chef-client

neutron-agent

chef-client

nova-compute

libvirt

neutron-agent

chef-client

nova-compute

libvirt

neutron-agent

chef-client

nova-compute

libvirt

自動更新 Cookbook, Role

Kubernetes OpenStackコンピュート

Page 56: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on

Kubernetes

監視

Page 57: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

監視の方針

OpenStackコントローラ(on Kubernetes)の監視

運用者はKubernetesが健全に動いていれば、

その上のOpenStackも内部的には健全であると判断する

外部監視(Rally)

シナリオ実行してワークフロー、SLAを監視

物理サーバ(Kubernetes, OpenStackコンピュート)の監視

プロセス監視、メトリクス監視、 ログ監視

57

Page 58: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStackコントローラの監視

運用者はKubernetesが健全に動いていれば、

OpenStackが内部的には健全であると判断する

58

Kubernetesの機能でOpenStackの各コンポーネントが、すべて正常に稼働していることを保証する

Page 59: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの機能による監視

• Liveness probe

• 失敗したら再起動

• Readiness probe

• 準備できるまでサービスインしない

59

Page 60: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Liveness probe

• Liveness probe

• リクエストが失敗したら再起動

60

keystone

Pod

keystone

Pod

HTTP GET /v3

→ 200

HTTP GET /v3

→ 500keystone

Pod

keystone

Pod

HTTP GET /v3

→ 200

HTTP GET /v3

→ 200

失敗したら再起動

Page 61: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Readiness probe

• Readiness probe

• 準備できるまでサービスインしない

61

keystone

Pod

keystone

Pod

keystone

Service

HTTP GET /v3

→ 200

HTTP GET /v3

→ 500

keystone

Pod

keystone

Pod

keystone

Service

HTTP GET /v3

→ 200

HTTP GET /v3

→ 200

成功したらサービスイン

Page 62: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

Kubernetesの機能による監視

Kubernetesが動いているからOpenStackも大丈夫?

keystone

Pod

livenessprobe/readinessprobe

nova

Pod

neutron

Pod

rabbitmq

Pod

Page 63: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

外部監視

livenessprobe/readinessprobe

OpenStackのサービスが正しく動作してるか監視したい!

(外部監視・ワークフロー監視)

外部監視システム(Rally)

インスタンス作成

keystone

Pod

nova

Pod

neutron

Pod

rabbitmq

Pod

Page 64: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

物理サーバの監視監視方法 Kubernetes OpenStackコンピュート

プロセス監視• sensu

kubelet, docker, kube-api,

kube-proxy, …

nova-compute, neutron-

agent, libvirt, …

メトリクス監視• sensu

• telegraf, influxdb, kapacitor

(試験導入中)

CPU, Mem, Disk, … CPU, Mem, Disk, …

ログ監視• splunk

etcd timeout, kube-dns

cannot connect, …

NIC Link Down, MEMORY

CONTROLLER, …

64

Page 65: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.65

Kubernetes NodesOpenStack Controller

OpenStack Compute Nodes

sensu-client telegraf

Influxdbkapacitor

sensu

外部監視システム

splunk

splunk

sensu-client telegraf

splunk

外部監視

メトリクス監視

汎用監視 ログ監視

Kubernetesにより監視

nova-compute

neutron-agent

keytstone neutron

horizonglance

libvirtd

Page 66: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

OpenStack on

Kubernetes

まとめ

Page 67: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

まとめ

• クラスタ数増加による障害の増加

• 障害の自動復旧が必要

• クラスタの構築・更新を自動化する必要がある

• OpenStackの障害の影響が深刻化

• ワークフローレベルでの正常性担保が必要

67

Page 68: Yahoo! JAPANにおけるOpenStack on Kubernetes導入までの道のり · OpenStack Deploy Manager • 以下の機能を実現するために内製した • HelmによるOpenStackの自動デプロイ

Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.

まとめ

• クラスタ数増加による障害の増加

• 障害の自動復旧が必要

• クラスタの構築・更新を自動化する必要がある

• OpenStackの障害の影響が深刻化

• ワークフローレベルでの正常性担保が必要

68

Kubernetesによる自動復旧

Deploy Managerによる自動デプロイ

外部監視システムによる監視


Recommended