18
Kubernetes でも Serverless したい! Kubernetes Meetup #7 (2017/10/12) チェシャ猫 (@y_taka_23) #k8sjp

Kubernetes でも Serverless したい! #k8sjp

  • Upload
    ytaka23

  • View
    2.209

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kubernetes でも Serverless したい! #k8sjp

Kubernetes でもServerless したい!

Kubernetes Meetup #7 (2017/10/12)チェシャ猫 (@y_taka_23)

#k8sjp

Page 2: Kubernetes でも Serverless したい! #k8sjp

Serverless + Kubernetes = ?

#k8sjp

Page 3: Kubernetes でも Serverless したい! #k8sjp

“Containerless” Kubernetes

● コンテナの存在を意識させない

○ いちいち docker build を行わない

○ ソースコードを直接アップロード

● Containerless のメリット

○ 開発者はコードだけに集中できる

○ イメージ管理の煩わしさが減る

#k8sjp

Page 4: Kubernetes でも Serverless したい! #k8sjp

Containerless の選択肢

● Funktion (206 stars)

○ https://github.com/funktionio/funktion

● Kubeless (1,156 stars)

○ https://github.com/kubeless/kubeless

● Fission (2,503 stars)

○ https://github.com/fission/fission

#k8sjp

Page 5: Kubernetes でも Serverless したい! #k8sjp

Architecture

#k8sjp

Page 6: Kubernetes でも Serverless したい! #k8sjp

KubelessKubernetes-Native

#k8sjp

Page 7: Kubernetes でも Serverless したい! #k8sjp

Kubeless の動作原理

● 追加の API サーバなどは不要

● Function の登録○ Function ごとに個別の Pod を作成

○ ソースコードは ConfigMap でマウント

○ Init-container がライブラリをインストール

● Function の実行○ Service 経由でコンテナにアクセス

#k8sjp

Page 8: Kubernetes でも Serverless したい! #k8sjp

Pod: hello

Python

pip

hello.py

ConfigMap

Service: hello

HTTP

#k8sjp

Page 9: Kubernetes でも Serverless したい! #k8sjp

FissionOn-Demand Specialization

#k8sjp

Page 10: Kubernetes でも Serverless したい! #k8sjp

Fission の動作原理

● Environment (v2) の登録○ 汎用 Pod をあらかじめプールしておく

○ 実行用 Pod の他にも Builder 用 Pod を登録

● Function の登録○ Builder Pod 内でビルド, zip を Storage に保存

● Function の実行○ Pool Manager がプールされた Pod をひとつ選択

○ その Pod 内に zip を Storage から取得して実行

#k8sjp

Page 11: Kubernetes でも Serverless したい! #k8sjp

hello.py

Pod: Builder

Pod: Python

Python

Pod: Python

Python

Pod: Python

Python

hello.zip

Storage

upload

#k8sjp

Page 12: Kubernetes でも Serverless したい! #k8sjp

Pod: hello

Python

Pod: Python

Python

Pod: Python

Python

hello.zip

StoragePool Mgr

Router

HTTP

specialize

#k8sjp

Page 13: Kubernetes でも Serverless したい! #k8sjp

Pod: hello

Python

Pod: Python

Python

Pod: Python

Python

hello.zip

StoragePool Mgr

Router

hello.zip

download

#k8sjp

Page 14: Kubernetes でも Serverless したい! #k8sjp

Pros / Cons

#k8sjp

Page 15: Kubernetes でも Serverless したい! #k8sjp

起動速度 / リソース消費

● 起動速度

○ Kubeless: 専用 Pod を用意しておくので速い

○ Fission: 初回はダウンロードのオーバヘッドあり

● リソース消費

○ Kubeless: Function の種類だけ個別に Pod が必要

○ Fission: 普段はプールしてある汎用 Pod の分のみ必要

#k8sjp

Page 16: Kubernetes でも Serverless したい! #k8sjp

トリガの自由度

● Kubeless

○ Kubernetes 内で完結 => トリガはイメージに依存

○ HTTP, Kafka

● Fission

○ 独立した専用コンポーネント => トリガの方法いろいろ

○ HTTP, Message Queue, Timer, Kubernetes Events

#k8sjp

Page 17: Kubernetes でも Serverless したい! #k8sjp

まとめ

● Serverless = Containerless

○ イメージ / コンテナの管理を意識させない

● 両者の方向性の違い

○ Kubeless: Kubernetes の仕組みを最大限利用

○ Fission: FaaS の機能を Kubernetes 上で再現

● シンプルさは Kubeless, 機能面は Fission

#k8sjp

Page 18: Kubernetes でも Serverless したい! #k8sjp

Have a Nice Function!Presented by チェシャ猫 (@y_taka_23)

#k8sjp