Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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について紹介します。

Masaya Aoyama (@amsy810)

July 22, 2019
Tweet

More Decks by Masaya Aoyama (@amsy810)

Other Decks in Technology

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. Agenda 1.  What is Kubernetes? 2.  GPUaaS abstraction plan at

    CyberAgent 3.  Ingress Controller at CyberAgent
  4. ʰ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 『障害時のクラスタ復旧』 『バックアップなどの運用』 を自動化(マネージド)
  5. ʰX as a Service ج൫ʱͱͯ͠ͷ Kubernetes Kubernetes は ⼩さなクラウド に近い

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

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

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

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

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

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

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

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

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

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

    Watch Manage StatefulSet and so on MySQL Operator
  16. 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 払い出し
  17. ϚχϑΣετͷෳࡶԽ 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 払い出し
  18. MLTask CustomResource for GPUaaS abstraction GPUaaS を抽象化 ML エンジニアなどが複雑なマニフェストを理解するのは困難 Simple

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

    StatefulSet MLTask Controller GPU GPU GPU GPU GPU GPU MLTask CustomResource for GPUaaS abstraction
  20. Kubernetes as a Service at adtech studio ではプライベートクラウド上に独⾃の KaaS を実装

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

    Network VM . VM . Software LB cluster Ingress Controller Watch Manage
  22. 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 牧垣 秀⼀朗)
  23. 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
  24. ͓͏ͪ Kubernetes ΋లࣔத OS Docker Container Docker / kubelet Container

    Container Docker / kubelet Container Container Container (Kind) Kubernetes in Docker