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

Platform for Platform with Kubernetes 〜ML Platform and KaaS〜 / cabasenext2021-k8s-amsy810

Platform for Platform with Kubernetes 〜ML Platform and KaaS〜 / cabasenext2021-k8s-amsy810

CyberAgent group Infrastructure Unit の Dev チームでは、ML 基盤や Kubernetes as a Service 基盤などの先進的なプラットフォームを独自に開発し、社内に提供しています。これらの基盤はいずれも Kubernetes の拡張性を活用して作られており、大きな分散システムとして日々進化しています。本セッションでは、Platform のための Platform としての Kubernetes を、実際の事例を踏まえて紹介します。

https://ca-base-next.cyberagent.co.jp/sessions/amsy810-k8s/

青山 真也
Software Engineer
2016年CyberAgent入社。Kubernetes as a Serviceのプロダクトオーナー、Kubernetes/CloudNative 領域の Developer Expertsとしても従事。世界で2番目にKubernetesの認定資格を取得。 著書に『Kubernetes完全ガイド』『みんなのDocker/Kubernetes』。 現在はOSSへのContribute 活動をはじめ、CloudNative Days Tokyo 2019/2020のCo-chair、CNCF公式のCloud Native Meetup TokyoやKubernetes Meetup TokyoのOrganizerなどコミュニティ活動にも従事。

More Decks by Masaya Aoyama (@amsy810)

Other Decks in Technology

Transcript

  1. View Slide

  2. 青山 真也 - Masaya Aoyama
    2016年度 新卒入社
    CyberAgent group Infrastructure Unit(CIU)
     ・KaaS product owner
     ・Developer Experts(Kubernetes / CloudNative 領域)
     ・CloudNative Days Tokyo Co-chair
     ・Kubernetes 完全ガイド 著者
    @MasayaAoyama
    @amsy810

    View Slide

  3. 趣味:おうち Kubernetes

    View Slide

  4. CyberAgent group Infrastructure Unit
    “dev” team が開発する基盤
    DGX A100 AFF A800
    GPUaaS (Kubernetes)
    AI Platform
    Kubernetes as a Service ML Platform
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  5. Kubernetes Extensibility

    View Slide

  6. Kubernetes
    商用環境では複数台のコンテナのホストマシンを管理する必要がある
     = コンテナオーケストレーションツールが必須
    Kubernetes はコンテナオーケストレーションツールの1つ
    Computing resource pool
    Storage pool
    ● Storage system
    ○ Block
    ○ Shared filesystem
    ○ Others
    ● スケジューリング
    ● ローリングアップデート
    ● ヘルスチェック
    ● オート / スケーリング
    ● 障害時のセルフヒーリング
    ● 認証・認可
    ● サービスディスカバリ
    ● ロードバランシング
    ● 機密情報のアタッチ
    ● マルチテナンシー
    ● ストレージとの連携

    View Slide

  7. Kubernetes != コンテナを実行する基盤
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  8. Reconciliation loop による宣言された状態への収束
    Kubernetes 内部では Controller と呼ばれるプログラムがシステムを制御
    複数の Controller によって 宣言された状態に収束
    ○ 指定されたレプリカ数を維持
    ○ ノード障害によりコンテナ停止時に再復旧
    ○ 機密情報や設定ファイル変更時に自動的に再読み込み
    ○ ロードバランサーのメンバーの自動管理
    ○ etc
    Actual ReplicaSet (replicas=3)
    Watch
    ReplicaSet Controller
    kind: ReplicaSet
    spec:
    replicas: 3
    template:
    spec:
    containers:
    - image: nginx:1.16
    Desired State
    Watch

    View Slide

  9. エコシステムの豊富さ
    CNCF / Kubernetes コミュニティではオープンな技術促進が進められており、
    Kubernetes と連携した様々な OSS が開発・公開されている
    Reconciliation Loop を利用した OSS の拡張 Controller を利用することで、
    様々な定常的な運用の大部分を Kubernetes に委譲 することが可能
    ● Cert Manager:ACMEを利用した証明書の自動生成と管理、LoadBalancerとの自動連携
    ● External DNS:IPアドレスとDNSレコードの管理
    エコシステムの豊富さという面では、他にも
    ● Prometheus / Loki / Tanka / Grafana:サービスの Observability の確保
    ● OAuth2 Proxy + Nginx ingress:WebUI へのリクエストに対する OAuth2 連携
    ● Others:オートスケーリング、Progressive Delibery、Namespace 間のデータ伝搬、etc

    View Slide

  10. プラットフォームとしての拡張性の高さ
    Kubernetes は拡張しやすく作られており、自社の特定のドメインに特化した機能拡張も可能
    Controller を実装するためのフレームワークなども提供されている(汎用的な OSS も利用している)
    拡張ポイントの例、
    ● Custom Controller / CustomResourceDefinition
    ● Mutating Webhook / Validating Webhook
    ● kubectl plugins
    ● Device plugins
    ● etc
    他にも、コンテナランタイム(OCI/CRI)・ネットワーク(CNI)・ストレージ(CSI)など、
    様々な標準化と歩幅を合わせながら Pluggable な実装が進められている

    View Slide

  11. Kubernetes の強み
    Reconciliation Loop による宣言された状態への収束
    エコシステムの豊富さ
    プラットフォームとしての拡張性の高さ
    ● 復元力がある
    ● 管理しやすい
    ● 可観測性がある
    ● 堅牢な自動化で頻繁な更新
    ● etc
    1
    2
    3
    ⇒ OSS の進化にも追従しながら、
      プラットフォームの進化を続けることで
      ビジネスの成功へ

    View Slide

  12. 今回は ML Platform と KaaS を例に、拡張性を生かした
    「独自実装の事例」や「エコシステムの利用事例」の一部を紹介します。
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  13. ML Platform

    View Slide

  14. ML Platform の概要
    DGX A100 → 高性能な MIG 対応の最新世代 GPU を提供(最大 56 GPUs/ 筐体)
    AFF A800 → 高性能なマルチプロトコル対応ストレージを提供(iscsi / NFS)
    GPU as a Service → GPU インスタンス・Jupyter Notebook を提供
    独自AI Platform → Google AI Platform 相当の基盤を提供
    DGX A100 AFF A800
    AI Platform
    GPUaaS (Kubernetes)
    AI Platform
    Kubernetes のポータビリティを
    生かしてマルチ DC 上への展開も検討

    View Slide

  15. 参考: 物理構成の概要
    100GbE
    25GbE
    Compute
    NVIDIA DGX A100
    Network
    Mellanox SN2010
    Storage
    NetApp AFF A800

    View Slide

  16. GPUaaS
    DGX A100 AFF A800
    AI Platform
    GPUaaS (Kubernetes)
    AI Platform

    View Slide

  17. GPU と Kubernetes
    Kubernetes には Device Plugin という仕組みが用意されている
    Device Plugin は Plugable になっており、様々なデバイスを Kubernetes で取り扱うことが可能
    ● GPU (NVIDIA / AMD / Intel)
    ● TPU (Tensor Processing Unit)
    ● FPGA
    ● etc.
    MIG にも対応済み
    余談:Kubernetes では InfiniBand の利用、NUMA や GPU Topology を意識した実行なども可能
    containers:
    - name: mljob
    image: my-mljob:v0.1
    resources:
    limits:
    nvidia.com/gpu: 1
    (コンテナランタイム側の対応も必要)
    icons: https://icons8.jp/icons/set/video-card

    View Slide

  18. クラウド向け認証情報との連携
    クラウド向けの認証情報用に Secret の type を拡張(Validating webhook で検証)
    ● type: gcp-credential
    ● type: aws-credential
    クラウド向けの認証情報を自動マウント(Mutating webhook で挿入)
    ● Pod のアノテーションに指定
    ● ServiceAccount への紐付け
    ※ その他にも Pod のアノテーションでのマウント無効化など、いくつかの機能も実装

    View Slide

  19. PersistentVolume への S3/GCS データのロード
    PersistentVolumeClaim 作成時にアノテーションを付与することで S3 / GCS からデータをロード
    前述のクラウド向け認証情報を利用することで、Private Bucket のロードも可能
    1. PVC にデータをロードする Job の作成
    2. PVC の .status.conditions で状態管理
    (type = Loading を拡張して追加)
       課題:.status.conditions が特に使われておらず、
       ロード完了前にも PVC の attach が行われてしまう
    機械学習の元データを効率的に扱えるように、
    Volume Snapshot との連携も検討中
    ※ その他にも 元データを変更されないように ReadOnly なマウントなど、いくつかの機能も実装
    (Controller)

    View Slide

  20. AI Platform
    DGX A100 AFF A800
    AI Platform
    GPUaaS (Kubernetes)
    AI Platform

    View Slide

  21. Google AI Platformと互換性のあるMLワークフローを管理できる社内基盤
                      (学習:実装済み、推論:実装中)
    オブジェクトストレージのデータを介して AI Platform 間でMLワークロードをオフロード
    AI Platform の概要
    DGX A100 AFF A800
    GPUaaS (Kubernetes)
    AI Platform
    ML Pod
    Kubernetes のポータビリティを
    生かしてマルチ DC 上への展開も検討
    AI Platform

    View Slide

  22. kubectl plugin による操作性の統一
    gcloud ai-platform jobs submit training
    gcloud ai-platform jobs list|get
    gcloud ai-platform jobs describe
    gcloud ai-platform jobs stream-logs
    gcloud ai-platform jobs cancel
    Cloud resource
    Google AI Platform
    Job definition
    kubectl plugin を実装し、”gcloud ai-platform” と同等のサブコマンドを実装
    kubectl ai-platform jobs submit training
    kubectl ai-platform jobs list|get
    kubectl ai-platform jobs describe
    kubectl ai-platform jobs stream-logs
    kubectl ai-platform jobs cancel
    On-prem. resource

    View Slide

  23. AI Platform with Kubeflow
    Experiment Suggestion
    Trial Trial Trial
    TFJob/PytorchJob/Job
    Pod
    Worker
    Container
    Metrics
    Collector
    Katib DB
    Metrics
    Container
    Kubeflow
    = Kubernetes 向けの ML ツールキット
    ● 各種 ML フレームワークのサポート
    ○ Tensorflow Operator
    ○ etc.
    ● ハイパーパラメータチューニング
    ○ Katib
    ● etc
    前述の kubectl plugin から操作
     独自の kubectl plugin を実装

    View Slide

  24. Kubernetes as a Service - AKE

    View Slide

  25. Kubernetes as a Service - AKE
    OpenStack の Private Cloud 上に Kubernetes を展開する Kubernetes as a Service
     2016 年中頃から開発、2017 年 4 月にリリース(Kubernetes 1.2, 1.3 の頃)
    構築した各 Kubernetes クラスタ内で動作する Controller
    ● 弊社 Private Cloud 向けの連携部分の実装
    ○ Cloud Controller Manager
    ○ Ingress Controller
    ○ Cluster Autoscaler
    ● 自動管理を実現する Controller の実装
    ○ Node Updater
    ○ Node Auto Repair
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  26. Kubernetes 自体のオーケストレーションの刷新
    開発当初、Kubernetes を構築するための成熟したプロダクトは存在しなかった
     e.g. OpenStack Magnum、kubeadm、etc.
    OpenStack Heat(=~ Cloud Formation)を用いて
    Kubernetes クラスタ自体のオーケストレーションを自前で実現
    時は流れて 2021 年、
    1. OpenStack Heat の脱却(運用コスト削減)
    2. メディア側 DC・AI事業本部側 DC 双方での KaaS 提供
       (CyberAgent group Infrastructure Unit への全社統合に伴い)
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  27. Cluster API
    Kubernetes Cluster を Kubernetes Resource として管理可能な Cluster API へ移行中
    右記のようなマニフェストを元に
    Controller が VM や Kubernetes の管理を行う
    ClusterAPI’s controller
    bootstrap cluster
    workload clusters
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  28. Kubernetes を横断管理する Controller の可能性
    Kubernetes 自体が “リソース” として管理されているため、
    複数の Kubernetes を横断した Controller なども実現しやすい
    custom controller
    bootstrap cluster
    workload clusters
    Copyright ©2021 CyberAgent, Inc. All Rights Reserved.

    View Slide

  29. Conclusion

    View Slide

  30. Conclusion
    今回紹介したのは弊社で利用している拡張機能の一例
    Kubernetes 上で一般的なアプリケーションを動かす以外にも、
    Kubernetes と連携した形のアプリケーションを書くことで機能拡張が可能
    DGX A100 AFF A800
    GPUaaS (Kubernetes)
    AI Platform
    Kubernetes as a Service ML Platform

    View Slide

  31. View Slide