Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

趣味:おうち Kubernetes

Slide 4

Slide 4 text

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.

Slide 5

Slide 5 text

Kubernetes Extensibility

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

エコシステムの豊富さ 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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

ML Platform

Slide 14

Slide 14 text

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 上への展開も検討

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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)

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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 を実装

Slide 24

Slide 24 text

Kubernetes as a Service - AKE

Slide 25

Slide 25 text

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.

Slide 26

Slide 26 text

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.

Slide 27

Slide 27 text

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.

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Conclusion

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

No content