OpenStack 環境における Container as a Service の提供と課題 株式会社サイバーエージェント アドテク本部 技術戦略室 Central Infrastructure Agency 青山 真也

Similar documents
Congress Deep Dive

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

FUJITSU Cloud Service for OSS 「コンテナサービス」 ご紹介資料

概要 ここでは先程デモを行った OpenStack の中で仮想マシンのデータがどのように管理されているかをご紹介致します OpenStack の中でデータがどのように配置され 管理されているかを知ることは 可用性を検討する上で非常に重要になります 2

Dockerの商用サービスでの利用事例紹介

kubeadmよりも遠い場所 ~手動でガンバるKubernetes on Raspberry Pi~

Kubernetesの基礎

Docker/Kubernetes実践コンテナ開発入門

[Google Kubernetes Day 19] ユーザからみた Anthos GKE On-Prem の利用について NTT Ltd. Group 桑山 純弥 2019/09/03

Docker 入門

NTTコミュニケーションズのクラウドサービス開発を支えるOSSとそのコミュニティ活動

PowerPoint Presentation

OpenStack/Contrail integration on k8s

自己紹介 伊藤広樹 ( 所属 : 日本電信電話株式会社 ) 2015 年 2016 年 社内 OpenStack 基盤の運用 2017 年 ( 現在 ) Blazarにコントリビュート開始 平井普 ( 所属 :NTTコムウェア) 2011 年 2016 年 NTT 通信網 NW 機器の運用設定 20

SIOS Protection Suite for Linux v9.3.2 AWS Direct Connect 接続クイックスタートガイド 2019 年 4 月

MidoNet は 2014 年 11 月よりオープンソースに Apache2 ライセンス 機能 : 分散仮想スイッチ 分散仮想ルーター 分散仮想 L4 ロードバランサー 分散仮想 L4 ファイヤーウォール 分散 NAT ドキュメント CLI デプロイメントツール ドキュメント類 オープンソースに含

aws_summit_abematv_fresh

Docker Enterprise EditionではじめるCaaS

OOL の CORD に関する取り組みと今後の展望について 株式会社オキット 新里康晃

2

サーバセキュリティサービスアップグレード手順書 Deep Security 9.6SP1 (Windows) NEC 第 1 版 2017/08/23

ネットワークの匠が語る!OpenStackのサードパーティ連携と勘所

AWS のコンテナ管理入門(Amazon EC2 Conatainer Service)

網設計のためのBGP入門

Presentation Template Koji Komatsu

アジェンダ はクラウド上でも十分使えます 1. の概要 とは の導入事例 で利用される構成 2. をクラウドで使う クラウドサービスの分類 Amazon Web Services による構成例 2

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Rev:1.0 Arcserve Backup 18.0: 下位互換サポート 1 下位互換サポートについて 下位互換サポートの対象製品と対象バージョン 注意点 全体的な注意点 下位互換バージョンのライセンス登録

会 社 概 要 社 名 ユニアデックス 株 式 会 社 代 表 者 代 表 取 締 役 社 入 部 泰 (いりべ やすし) 住 所 /TEL 東 京 都 江 東 区 豊 洲 ( 大 代 表 ) 設 1997 年 3 月 4 日 資 本 7 億 5,

StackStormによるイベントドリブンな運用自動化

Cisco ACI とエンタープライズアプリケーション

ログインおよび設定

自己紹介 元木顕弘 某電気系メーカの研究所に所属 IPルータ 広域 Ethernet 装置 迷惑メールフィルタなどの開発をやっていました 最近は OpenStack, OpenFlow 周りで活動しています Linux JM Project 皆さん日本語マニュア

教室案内.pptx

サーバセキュリティサービス 導入手順書 Deep Security 9.5SP1 (Windows) プロキシ経由編

R76/Gaia ブリッジ構成設定ガイド

10年オンプレで運用したmixiをAWSに移行した10の理由

スライド 1

Microsoft Word - AWSBlueprint final.docx

スライド 1

PowerPoint プレゼンテーション

新製品 Arcserve Backup r17.5 のご紹介 (SP1 対応版 ) Arcserve Japan Rev. 1.4

PowerPoint プレゼンテーション

WebSAM MCOperations Amazon Web Services 向け構築ガイド 2015 年 5 月 日本電気株式会社

FUJITSU Cloud Service for OSS 「ログ監査サービス」 ご紹介資料

下位互換サポートの注意点 下位互換サポートにはいくつか注意点があります 1. 全体的な注意点 と 利用する製品の注意点 最 後に 8. そのほかの注意点 をすべて確認してください 1. 全体的な注意点 ライセンスキーの登録 ( 重要 ) Arcserve Backup r17 からライセンスの登録モ

Mobile Access IPSec VPN設定ガイド

OPNFV_meetup_ pptx

2ACL DC NTMobile ID ACL(Access Control List) DC Direction Request DC ID Access Check Request DC ACL Access Check Access Check Access Check Response DC

_コンテナ技術を使ったディザスタリカバリ方法に関する考察

_mokuji_2nd.indd

Cisco HyperFlex セットアップ概要

下位互換サポートの注意点 下位互換サポートにはいくつか注意点があります 1. 全体的な注意点 と 利用する各製品の注意点 最後に 7. そのほかの注意点 をすべて確認してください 1. 全体的な注意点 ライセンスキーの登録 ( 重要 ) 利用中の環境で Arcserve Backup の上書きインス

Agenda 1. 今回のバージョンアップについて a. バージョンアップ概要 b. バージョンアップ目的 c. 新バージョンのシステム要件に関する注意事項 d. 現行バージョンのサポート期間 2. 対応プラットフォームの追加 3. 新機能の追加および機能強化 2

PowerPoint Presentation

AWS Deck Template

NTMobile LAN NT- Mobile(Network Traversal with Mobility) [1] NTMobile LAN 2. NTMobile NTMobile NTMobile NTM IP DC(Direction Coordinator)

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 7編)

Oracle Solaris 仮想環境とプロビジョン環境の構築

Copyright 2016 EXIN 無 断 複 写 転 載 禁 止 本 文 書 のいかなる 部 分 も 事 前 に EXIN から 書 面 による 許 可 を 得 ることなく 出 版 複 製 複 写 デー タ 処 理 システムへ 保 存 または 印 刷 物 写 真 マイクロフィルムなどいかなる

クラスタ構築手順書

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

Red Hat OpenShift上でのInterstage Application Serverの動作手順(Java EE 6編)

MS SQL の Point-in-Time リストア A - - v6.5 Update4 以降サポート Active Directory 詳細レベルリストア A A A v5 Update2 以降サポート 小さいパーティションへのBMR A A A v5 Update2 以降サポート リモートレ

PowerPoint プレゼンテーション

Transcription:

OpenStack 環境における Container as a Service の提供と課題 株式会社サイバーエージェント アドテク本部 技術戦略室 Central Infrastructure Agency 青山 真也

自己紹介 青山 真也 あおやま まさや 2016 年 4 月 サイバーエージェントに新卒入社 同 6 月 アドテク本部 技術戦略室 CIA へ配属 最近の業務内容 Container 周り OpenStack 周り OpenStack Summit Barcelona 2016 2

OpenStack Summit Barcelona 2016 について 参加レポートをまとめています [OpenStack Summit Barcelona 2016] 新卒がミタ コンテナ技術編 [OpenStack Summit Barcelona 2016] 新卒がミタ 運用改善編 [OpenStack Summit Barcelona 2016] 新卒がミタ 先輩 OpenStackerと OpenStack コミュニティ編 hbp://adtech.cyberagent.io/techblog/ 3

目次 弊社の現状の環境 様々なコンテナ技術と問題点 Docker, LXC (LXD) Kubernetes, COE Magnum, Kuryr, Midonet, Calico, ConPv 弊社の要件と CaaS の構想 4

弊社の現状の環境 OpenStack によるプライベートクラウド 弊社アドテク本部単体 Over 25000 vcpus シビアな性能を求められるのでオーバコミットはしていません Over 3500 VMs (with KVM) Over 500 Hosts コンテナ環境は 各テナントが VM 上に Kubernetes などのクラスタを構築 CaaS 環境の提供が必要 5

様々なコンテナ技術 Docker LXC (LXD) FreeBSD Jail etc. 現状では アプリケーションコンテナ = Docker システムコンテナ = LXC (LXD) 今回対象とするのは Docker 一部 LXC(LXD) の話を含みます 6

Docker って Docker Image をもとにしたアプリケーションコンテナ アプリケーション + 実行環境 ポータビリティ性が高い 手元の開発環境のイメージをリモートのサーバにデプロイ Docker Hub イメージ保管 + バージョン管理 高速なデプロイ 数秒で起動 基本的にはスケールさせられるものでの利用が多い どうやってスケールさせるか 7

Container OrchestraPon Engine COE Docker コンテナのオーケストレーションを行う スケールアウト スケールイン リソース管理 ロードバランシング ヘルスチェック 再デプロイ ローリングアップデート 様々な Container OrchestraPon Engine Kubernetes Swarm Mesos etc. 今回お話するのは Kubernetes ベース 基本的な出来ることは同じ 8

ちなみに GCP GKE と AWS ECS Google Container Engine (GKE) Google Compute Engine 上に Kubernetes クラスタを構築 Amazon EC2 Container Service (ECS) EC2 上に ECS クラスタを構築 独自のオーケストレーションツール Google も Amazon も同様に COE を使った環境を提供している スケールさせない 1 コンテナの場合も COE に任せればいい 9

Kubernetes 仮想ネットワーク Kubernetes のコンテナクラスタへのアクセス方法は主に2パターン ReplicaPonController で作成される Pod への Service は主に 2 パターン External network 192.168.1.1 NIC NIC flannel internal network VXLAN overlay 192.168.1.2 docker0 docker0 flannel.1 flannel.1 minion minion 10

コンテナクラスタへのアクセス (1) flannel Internal network の VIP を利用 ClusterIP ただし疎通する範囲は Kubenetes のクラスタ内からのみ 外部公開はできない External network 192.168.1.1 10.254.0.y:80 > :80 への LB 10.254.0.z:80 > :80 への LB flannel internal network VXLAN overlay NIC 192.168.1.2 NIC docker0 docker0 flannel.1 flannel.1 minion minion 11

コンテナクラスタへのアクセス (2) External network を利用 ExternalIP, NodePort ポートフォワーディングする形 同じポート番号を使用できない External network 192.168.1.1 192.168.1.1:80 192.168.1.2:80 > :80 への LB 192.168.1.1:8080 192.168.1.2:8080 > :80 への LB flannel internal network VXLAN overlay NIC 192.168.1.2 NIC docker0 docker0 flannel.1 flannel.1 minion minion 12

素の Kubernetes で満たせない要件 ネットワーク的な機能要件 任意のポートが必要 外部疎通性のある VIP が必要 外部疎通性のある IP が必要 コンテナごとに外部疎通性のある IP は必要ない 但し コンテナごとにログイン or シェルが起動できることが望ましい その他必要そうな機能要件 認証 Quota セキュリティグループ Block Device 13

弊社の要件 外部疎通性のある VIP が欲しい ポートは任意のものが使えるように 積極的に L3 agent を使う理由はまだない 各コンテナに入りたい SSH じゃなくても COE のノードにログインできればいい NW 分離 Security Group 認証 Quota BlockDevice COE on VM は出来れば避けたい COE は自由に選びたい Kubernetes Swarm 14

有名どころな技術 CaaS の提供方法はいくつか存在 OpenStack 環境用 Magnum (Zun) + (Heat + Midonet) Internal Network の VIP に外部疎通性を持たせる方法 Kuryr + Midonet Calico その他検討した方式 ConPv Large Kubernetes Cluster 15

OpenStack 環境用コンポーネント 16

Magnum (+ Heat + Midonet) Heat と L3 Network を使って COE クラスタを構築 インスタンスを作って Ansible/Chef で自動構築に近い COE クラスタ k8s, swarm, etc nova-vm nova-vm nova-vm Heat: AWS CloudFormaPon に近いコンポーネント 以前までコンテナの作成なども Magnum で行っていましたが Newton 以降方針が変わり kubectl や docker swarm などの CLI で操作するか Zun を使って操作するようになりました 17

Internal Network の VIP に 外部疎通性を持たせる方法 18

Midonet + Kuryr Kubernetes クラスタへの変更を検知して Neutron を操作 外部からの疎通性がなかった VIP に FloaPng IP を利用可能 External network 192.168.1.1 NIC NIC VIP に対して FloaPngIP を利用可能 flannel internal network VXLAN overlay 192.168.1.2 docker0 docker0 flannel.1 flannel.1 minion minion 19

Calico Internal Network の VIP を BGP 伝搬して外部から疎通性を持たせる BGP Router BGP Peer Kube-proxy VIP を External NW の BGP Routerに広報 flannel internal network VXLAN overlay External network NIC NIC docker0 docker0 flannel.1 flannel.1 20

その他検討した方式 21

ConPv (L2 mode) コンテナの内部 NW を L2 透過で見せる OpenStack 環境では難しい可能性も 未検証 AggrigaPon SW Bridge Bridge Container Container Container Container Container Container 22

Large Kubernetes Cluster Kubernetes で巨大な1つの物理クラスタを構築 OK: Quota, 認証 (Keystone 連携) kubernetes の namespace 機能 NG: NW の分離, Security Group, Block Storage ポートの奪い合いは前段に LB を配置して解決 10.0.0.1:80 (VIP) > 192.168.0.1:10001 > 192.168.0.2:10001 > 192.168.0.3:10001 10.0.0.2:80 (VIP) > 192.168.0.1:10002 > 192.168.0.2:10002 > 192.168.0.3:10002 10.0.0.1:53 (VIP) > 192.168.0.1:10003 > 192.168.0.2:10003 > 192.168.0.3:10003 :10001 > :80 :10002 > :80 :10003 > Container-C:53 Overlay (flannel + iptables + VXLAN) 192.168.1.1/24 Container-C 192.168.1.2/24 Container-C 192.168.1.3/24 23

有名どころな解決方法 CaaS の提供方法はいくつか存在 OpenStack 環境用 Magnum (Zun) + (Heat + Midonet) Magnum 単体では k8s が構築できるだけ Internal Network の VIP に外部疎通性を持たせる方法 Kuryr + Midonet 機能的には十分だがまだ敷居が高い Calico 機能的には十分だがまだ敷居が高い 障害時のデバッグが大変 その他検討した方式 情報が少なめ ProducPon Ready? ConPv OpenStack 環境では動作が怪しい コミュニティが見えない Large Kubernetes Cluster テナント分離にいくつか難あり 24

Docker Image は Swin バックエンドの docker-registry 弊社の CaaS 環境の構想 OpenStack 上の各テナント毎に任意の COE クラスタ on nova-lxd Container Tenant A SNAT の LB を利用した 外部疎通性のある VIP Overlay (LVS+ iptables + VXLAN) Container-C Container-C Overlay (flannel + iptables + VXLAN) Container-C Container-C Tenant B Overlay (LVS+ iptables + VXLAN) Container-C Overlay (flannel + iptables + VXLAN) Container-C Container-C Container-C 25

弊社の要件 外部疎通性のある VIP が欲しい ポートは任意のものが使えるように 物理の SNAT LB を利用 積極的に L3 agent を使う理由はまだない 各コンテナに入りたい テナント毎に OpenStack 上に NW 分離 Security Group 認証 Quota BlockDevice クラスタ構築 SSH じゃなくても COE のノードにログインできればいい COE on VM は避けたい nova-lxd 上に構築 COE は自由に選びたい Kubernetes Swarm 26

次期 OpenStack 環境に向けて アプリケーション的な用途 Docker のアプリケーションコンテナ on nova-lxd 従来通りの VM 的用途 nova-lxd のシステムコンテナ KVM docker nova-lxd nova-lxd 現状 次期環境 フルコンテナプラットフォームの実現も可能 27

まとめ OpenStack では FloaPng IP が k8s の Service に bind できるのが自然 Kuryr + Midonet がコンセプト的には好み とはいえ 障害時のデバッグとかは大変そう コードを追えるようになるには時間が足りない VIP/LB 周りとかは信頼性のある LB に任せたい 大幅なリスク低減 疎結合なアーキテクチャ 全てコンテナで動かしたい 全部が Docker Container というわけではない 28

ご静聴ありがとうございました 29