Pro Yearly is on sale from $80 to $50! »

adtech studioにおける CRD 〜抽象化したGPUaaSによる段階移行計画 & AKE Ingress v2〜 @CloudNative Days Tokyo / OpenStack Days Tokyo 2019 / cndt2019-ca-k8s-gpuaas

adtech studioにおける CRD 〜抽象化したGPUaaSによる段階移行計画 & AKE Ingress v2〜 @CloudNative Days Tokyo / OpenStack Days Tokyo 2019 / cndt2019-ca-k8s-gpuaas

Masaya Aoyama @amsy810 (CyberAgent)

adtech studioにおける CRD
〜抽象化したGPUaaSによる段階移行計画 & AKE Ingress v2〜
@CloudNative Days Tokyo / OpenStack Days Tokyo 2019

adtech studioのインフラチームではCRDを使った拡張をいくつか行っているため、その一部を紹介します。
(1) GPUaaS環境の提供をCRDを使って抽象化を行い、MLエンジニアでも利用がしやすい環境を試作しています。Kubernetes-nativeなGPU環境の提供に際し、どのようにすると段階移行していきやすいかについて紹介します。
(2) AKEに最近実装したContainer-native な L7 Load Balancer を提供するAKE Ingress v2について紹介します。

De266761b955b2636e454a1bc7a99ed4?s=128

Masaya Aoyama (@amsy810)

July 22, 2019
Tweet

Transcript

  1. Masaya Aoyama CyberAgent - adtech studio adtech studioʹ͓͚Δ CRD ʙந৅Խͨ͠GPUaaSʹΑΔஈ֊Ҡߦܭը&

    AKE Ingress v2ʙ @CloudNative Days Tokyo / OpenStack Days Tokyo 2019 amsy810 @amsy810
  2. Publicity (excerpt)   書籍 『Kubernetes 完全ガイド』 『みんなの Docker/K8s』  基調講演 『Japan

    Container Days v18.04』 『Google Cloud K8s Day』   招待講演 『情報処理学会 コンピュータシステムシンポジウム』         『AWS Dev Day Tokyo』 『IBM Think Japan』 『JEITA 委員会』   登壇 『KubeCon + CloudNativeCon China 2019』 and so on  資格 『CKAD #2』 『CKA #138』 Masaya Aoyama (@amsy810) Infrastructure Engineer Community   Co-chair 『Cloud Native Days Tokyo (旧 Japan Container Days)』  Organizer 『Cloud Native Meetup Tokyo』   『Kubernetes Meetup Tokyo』   『KubeCon Japanese exchange meeting』   Contribute to OpenStack and Kubernetes 主業務: K8s as a Service の実装 K8s / CloudNative 関連のアーキテクト
  3. Kubernetes 好きですか?

  4. Palm-sized Personal Kubernetes Cluster Everyone has a personal Kubernetes cluster

    just like a smartphone, right?
  5. Kubernetes is anywhere We can use phyisical Kubernetes cluster anywhere

  6. Kubernetes is anywhere Be careful, this is not a bomb,

    this is Kubernetes.
  7. Agenda 1.  What is Kubernetes? 2.  GPUaaS abstraction plan at

    CyberAgent 3.  Ingress Controller at CyberAgent
  8. What is 『コンテナ/アプリケーション実⾏基盤』としての Kubernetes 『X as a Service 基盤』としての Kubernetes

    『分散システムフレームワーク』としての Kubernetes
  9. ʰίϯςφ/ΞϓϦέʔγϣϯ࣮ߦج൫ʱͱͯ͠ͷ Kubernetes Google Borg をベースとした洗練された基盤 •  セルフヒーリング •  ロードバランサとの⾃動連携 • 

    オートスケール •  様々なワークロードへの対応 •  データの管理
  10. ʰX as a Service ج൫ʱͱͯ͠ͷ Kubernetes Platform for Platform • 

    Database as a Service on Kubernetes •  Queue as a Service on Kubernetes •  Serverless as a Service on Kubernetes •  ML as a Service on Kubernetes oracle/mysql-operator 『障害時のクラスタ復旧』 『バックアップなどの運用』 を自動化(マネージド)
  11. ʰX as a Service ج൫ʱͱͯ͠ͷ Kubernetes Kubernetes は ⼩さなクラウド に近い

    oracle/mysql-operator 『障害時のクラスタ復旧』 『バックアップなどの運用』 を自動化(マネージド) Relational DB Key Value Store Document DB Queue Developer
  12. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes Kubernetes のコアは『Decralative API 』と『分散システムフレームワーク』 ※ 厳密には Controller も

    API を⽤いて変更します。 reconcile() { … } 登録 (via API Request) Watch クラスタの状態 コンテナの作成・削除 Controller
  13. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes Reconcile Loop (調整 Loop)により、あるべき状態に収束  = ただ起動するわけではなく、その状態を維持する Observe Diff

    Act Observe: 現状を確認 Diff: 理想と現実の差分を計算 Act: 差分に対する処理を実施 クラスタの状態 理想の状態 reconcile() { … } Controller
  14. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes たとえば 2 つしかコンテナ(Pod)が起動していない場合… Observe: 理想=3、現状=2 Observe Diff Act

    Observe: 現状を確認 Diff: 理想と現実の差分を計算 Act: 差分に対する処理を実施 クラスタの状態 理想の状態 reconcile() { … } Controller
  15. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes たとえば 2 つしかコンテナ(Pod)が起動していない場合… Diff: 1 つコンテナ(Pod)が⾜りない Observe Diff

    Act Observe: 現状を確認 Diff: 理想と現実の差分を計算 Act: 差分に対する処理を実施 クラスタの状態 理想の状態 reconcile() { … } Controller
  16. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes たとえば 2 つしかコンテナ(Pod)が起動していない場合… Act: 1つ nginx:1.12 のコンテナ(Pod)を作成する Observe

    Diff Act Observe: 現状を確認 Diff: 理想と現実の差分を計算 Act: 差分に対する処理を実施 クラスタの状態 理想の状態 reconcile() { … } Controller
  17. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes Reconcile Loop (調整 Loop)により、あるべき状態に収束  = ただ起動するわけではなく、その状態を維持する つまり、運⽤ナレッジをプログラム化することで⾃動化 このプログラムが

    Controller(Operator) ReplicaSet Controller は必要なレプリカ数が •  ⾜りなかったら新しく⽴ち上げ •  超過していたら停⽌させる Observe Diff Act Observe: 現状を確認 Diff: 理想と現実の差分を計算 Act: 差分に対する処理を実施
  18. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes Kubernetes では⾮常に沢⼭の Controller が動いている •  Deployment Controller • 

    ReplicaSet Controller •  Endpoints Controller •  Cloud Controller •  etc. これらの Controller が⾮同期に動作することで ⼀つの分散システムとして成り⽴っている reconcile() { … } Controller reconcile() { … } Controller reconcile() { … } Controller reconcile() { … } Controller reconcile() { … } Controller 実際の状態 理想の状態 watch
  19. ʢ࠶ܝʣʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes Kubernetes のコアは『Decralative API 』と『分散システムフレームワーク』 ※ 厳密には Controller も

    API を⽤いて変更します。 reconcile() { … } 登録 (via API Request) 監視 クラスタの状態 コンテナの作成・削除
  20. ʰ෼ࢄγεςϜϑϨʔϜϫʔΫʱͱͯ͠ͷ Kubernetes Kubernetes のコアは『Decralative API 』と『分散システムフレームワーク』 ※ 厳密には Controller も

    API を⽤いて変更します。 reconcile() { … } 登録 (via API Request) 監視 MySQL Cluster の管理 reconcile() { … } Controller 独⾃のリソースに対してどのような処理をするか Controller を書くことで運⽤が容易に (運⽤ナレッジのプログラム化)
  21. MySQL operator reconcile() { … } Register (via API Request)

    Watch Manage StatefulSet and so on MySQL Operator
  22. At CyberAgent, GPU as a Service Abstraction

  23. GPU as a Service GPU GPU GPU GPU GPU GPU

    GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU with nvidia-docker Developer Developer Developer Developer Developer Developer Developer Developer GPU GPU GPU 払い出し
  24. ϚχϑΣετͷෳࡶԽ GPU GPU GPU GPU GPU GPU GPU GPU GPU

    GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU GPU with nvidia-docker Developer Developer Developer Developer Developer Developer Developer Developer GPU GPU GPU 払い出し
  25. MLTask CustomResource for GPUaaS abstraction GPUaaS を抽象化 ML エンジニアなどが複雑なマニフェストを理解するのは困難 Simple

    settings •  どのイメージを使うか •  どのトレーニングデータを使うか •  どこにモデルを出⼒するか •  ⼀時ファイル置き場にとこを利⽤するか •  同時実⾏する並列数 •  GPUなどのリソースをどのくらい割り当てるか
  26. reconcile() { … } Register (via API Request) Watch Manage

    StatefulSet MLTask Controller GPU GPU GPU GPU GPU GPU MLTask CustomResource for GPUaaS abstraction
  27. ஈ֊Ҡߦͷংষ 最初の Step では通常の Instance のように利⽤することを想定  StatefulSet + Headless Service

  28. 募集

  29. Kubernetes as a Service at adtech studio ではプライベートクラウド上に独⾃の KaaS を実装

     (2016 年後半から検証を開始) •  “type: LoadBalancer” の⾃社⽤プロバイダを独⾃実装 •  GKE-like な Ingress Controller を独⾃実装 •  Container-native LoadBalancing の弊社⽤ Ingress Controller を独⾃実装 もちろん •  クラスタのローリングアップデート、ノードの⾃動復旧なども完備 •  数分でクラスタを起動、クラスタのスケーリングも可能
  30. our company own Ingress controller L4 LB VM Network Pod

    Network VM . VM . Software LB cluster Ingress Controller Watch Manage
  31. our company own Ingress controller L4 LB VM Network Pod

    Network VM . VM . Software LB cluster Ingress Controller Watch Manage Day2 7/22 17:40 - 18:20 OpenStackとIngress Controllerで作るContainer Nativeロードバランシング (CyberAgent 牧垣 秀⼀朗)
  32. その他の CyberAgent の事例

  33. Using Kubernetes at AbemaTV でも 2016年〜2017年頃に利⽤を開始 他にも adtech studio では、新規開発の多くで

    Kubernetes を利⽤(2018年〜) https://speakerdeck.com/wappy100/legacy-to-container https://speakerdeck.com/chokkoyamada/midoruuea-webapurimadequan-tewohelmhua-sitasabisufalseyun-yong-shi-li
  34. 最後にお知らせ

  35. Kubernetes 好きですか?

  36. 全然関係ないですけど、 k キーって見づらくないですか?

  37. Kubernetes * Keyboard Cap

  38. Kubernetes * Keyboard Cap alias k=“kubectl” e.g.) k get pods

  39. 全然関係ないですけど、 ESC キーって見づらくないですか?

  40. Kubernetes * Keyboard Cap

  41. Kubernetes * Keyboard Cap

  42. ϒʔεʹͯ഑෍த 1⽇⽬ と 2⽇⽬ で分けて配布予定です

  43. ͓͏ͪ Kubernetes ΋లࣔத OS Docker Container Docker / kubelet Container

    Container Docker / kubelet Container Container Container (Kind) Kubernetes in Docker
  44. None
  45. Thank you for your attention Let’s enjoy with Kubernetes follow

    me: @amsy810
  46. None