各ユーザが GPU コンテナを利⽤できる仕組み
Web UI や CLI からも Kubernetes を
隠蔽した形で操作可能
Jupyter notebook の払い出し等
更にこの上に ML 関連の Platform が展開
(16BTB4FSWJDF1MBUGPSN
Container
Computing resource pool
Storage pool
icons: https://icons8.jp/icons/set/video-card
Slide 7
Slide 7 text
• ユーザに払い出されるリソースは Namespace を使って分割
• RBAC を使った権限が管理
(16BTB4FSWJDF1MBUGPSN
User A namespace User B namespace
icons: https://icons8.jp/icons/set/video-card
Slide 8
Slide 8 text
ConfigMap / Secret
as simple data store
Slide 9
Slide 9 text
ある程度のデータは Kubernetes を簡易的な DB として利⽤
• ユーザーが定義したテンプレート
• ユーザが登録した利⽤イメージ
• etc
変更が少なく、ユーザに容易に操作させるようなデータで利⽤(cf. Configuration as Code)
各 Namespace に保存するため、Kubernetes RBAC と連携可能
$POGJH.BQBOE4FDSFUBTTJNQMFEBUBTUPSF
Program
Request
Data
• 課⾦のための情報を保存したい
• 現在のリソースの情報から設定を⽣成したい
• etc.
CronJob で定期的に起動するなどで、
Kubernetes API を叩いて処理を⾏うプログラム
• 利⽤状況を DB に格納
• Pod のリストから設定ファイルを⽣成
4UBUTEBUBGSPN,VCFSOFUFT"1*
Computing resource pool
Storage pool
LimitRanger Admission Controller︓コンテナの最⼤ Requests/Limits などを制限する
݉༻͞Ε͍ͯΔ "ENJTTJPO$POUSPMMFS
https://kubernetes.io/blog/2019/03/21/a-guide-to-kubernetes-admission-controllers/
apiVersion: v1
kind: LimitRange
metadata:
name: sample
spec:
limits:
- type: Container
max:
cpu: 50m
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
spec:
containers:
- name: my-con
image: nginx:1.16
resources.requests.cpu: 100m
OK
or
NG
Slide 23
Slide 23 text
Admission Controller の中にはユーザが定義可能な拡張ポイント⽤プラグインが提供されている
• ValidatingAdmissionWebhook︓外部 API Server にリクエストを送って Validating
• MutatingAdmissionWebhook︓外部 API Server にリクエストを送って Mutating
"ENJTTJPO8FCIPPL
https://kubernetes.io/blog/2019/03/21/a-guide-to-kubernetes-admission-controllers/
GPU as a Service をサンプルとして、いくつかのパターンで実現⽅法について紹介
ConfigMap / Secret を簡易的なデータストアとして利⽤
Kubernetes API から取得可能なデータの利⽤
-> より⾼度な⾃動化に関しては⾃然と Controller 化や Admission Webhook を検討する
$PODMVTJPO