Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Fission で 始める Containerless Kubernetes #serverlesstokyo

2,016 views

Published on

Serverless Meetup Tokyo #6 のスライドです。Kubernetes 上で Serverless を実現するフレームワーク Fission について、その動機と動作原理を概説します。また、最近発表された新機能 Fission Workflows についても触れています。

関連ブログ記事 : http://ccvanishing.hateblo.jp/entry/2017/10/18/202148

Published in: Technology
  • Login to see the comments

  • Be the first to like this

Fission で 始める Containerless Kubernetes #serverlesstokyo

  1. 1. Fission で始める Containerless Kubernetes Serverless Meetup Tokyo #6 (2017/10/16) チェシャ猫 (@y_taka_23) #serverlesstokyo
  2. 2. Fission をめぐる3つの疑問 ● なぜ Serverless なのか? ● どうやって実現するのか? ● より実用的に使うには? #serverlesstokyo
  3. 3. Q : なぜ Serverless なのか? #serverlesstokyo
  4. 4. A :「都合のいい相手」でいてほしい #serverlesstokyo
  5. 5. Kubernetes + Serverless = “Containerless” ● コンテナの管理を意識したくない ○ いちいち docker build しない ○ Docker Registry も管理しない ● 平常時にリソースを占有したくない ○ Kubernetes クラスタ上での「従量課金」 ○ PaaS 的なモデル (e.g. Beanstalk, Deis) との違い ● プラットフォームに依存したくない #serverlesstokyo
  6. 6. https://github.com/fission/fission #serverlesstokyo
  7. 7. Q : どうやって実現するのか? #serverlesstokyo
  8. 8. A : 必要に応じてコンテナを特殊化 #serverlesstokyo
  9. 9. Fission の On-Demand 戦略 ● 普段は汎用コンテナをプール ○ 言語ごとの実行環境 ○ 起動したコンテナをあらかじめ準備 ● 呼び出しがあったときに特殊化 ○ Function の本体を読み込み ○ 以後、特定の Function 専用になる ● しばらく呼び出しがなければ消滅 #serverlesstokyo
  10. 10. Environment の作成 $ fission env create --name python --image fission/python-env:0.3.0 $ fission env list NAME UID IMAGE python 3e2b4c9c-...-fa163ed77208 fission/python-env:0.3.0 $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...a09s8 2/2 Running 0 32s python-7c608efa-...9c72z 2/2 Running 0 32s python-7c608efa-...fp23r 2/2 Running 0 32s #serverlesstokyo
  11. 11. Environment の作成 $ fission env create --name python --image fission/python-env:0.3.0 $ fission env list NAME UID IMAGE python 3e2b4c9c-...-fa163ed77208 fission/python-env:0.3.0 $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...a09s8 2/2 Running 0 32s python-7c608efa-...9c72z 2/2 Running 0 32s python-7c608efa-...fp23r 2/2 Running 0 32s 実行環境を指定 #serverlesstokyo
  12. 12. Environment の作成 $ fission env create --name python --image fission/python-env:0.3.0 $ fission env list NAME UID IMAGE python 3e2b4c9c-...-fa163ed77208 fission/python-env:0.3.0 $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...a09s8 2/2 Running 0 32s python-7c608efa-...9c72z 2/2 Running 0 32s python-7c608efa-...fp23r 2/2 Running 0 32s プールされたコンテナ #serverlesstokyo
  13. 13. Function の作成 $ cat hello.py def main(): return ‘Hello, World!n’ $ fission function create --name hello --env python --code hello.py $ fission function list NAME UID ENV hello d583fda0-b193-11e7-b4db-fa163ed77208 python #serverlesstokyo
  14. 14. Function の作成 $ cat hello.py def main(): return ‘Hello, World!n’ $ fission function create --name hello --env python --code hello.py $ fission function list NAME UID ENV hello d583fda0-b193-11e7-b4db-fa163ed77208 python ソースコードを指定 #serverlesstokyo
  15. 15. Function の作成 $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...fm0sh 2/2 Running 0 2m python-7c608efa-...w923v 2/2 Running 0 2m python-7c608efa-...086s2 2/2 Running 0 2m #serverlesstokyo
  16. 16. Function の作成 $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...fm0sh 2/2 Running 0 2m python-7c608efa-...w923v 2/2 Running 0 2m python-7c608efa-...086s2 2/2 Running 0 2m この時点ではプールに変化なし #serverlesstokyo
  17. 17. トリガーの作成と呼び出し $ fission route create --url /hello --function hello $ curl http://$FISSION_ROUTER/hello Hello, World! $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...fm0sh 2/2 Running 0 3m python-7c608efa-...w923v 2/2 Running 0 3m python-7c608efa-...086s2 2/2 Running 0 3m python-7c608efa-...23zr1 2/2 Running 0 17s #serverlesstokyo
  18. 18. トリガーの作成と呼び出し $ fission route create --url /hello --function hello $ curl http://$FISSION_ROUTER/hello Hello, World! $ kubectl -n fission-function get pods NAME READY STATUS RESTARTS AGE python-7c608efa-...fm0sh 2/2 Running 0 3m python-7c608efa-...w923v 2/2 Running 0 3m python-7c608efa-...086s2 2/2 Running 0 3m python-7c608efa-...23zr1 2/2 Running 0 17s コンテナが増えた #serverlesstokyo
  19. 19. Label の書き換えによる特殊化 $ kubectl -n fission-function describe pods ... # generic pods Labels: environmentName=python environmentUid=3e2b4c9c-...-fa163ed77208 pod-template-hash=1809649413 poolMgrInstanceId=UthmnZt ... # the specialized pod Labels: functionName=hello functionUid=d583fda0-b193-11e7-b4db-fa163ed77208 poolMgrInstanceId=UthmnZt unmanaged=true ... #serverlesstokyo
  20. 20. Label の書き換えによる特殊化 $ kubectl -n fission-function describe pods ... # generic pods Labels: environmentName=python environmentUid=3e2b4c9c-...-fa163ed77208 pod-template-hash=1809649413 poolMgrInstanceId=UthmnZt ... # the specialized pod Labels: functionName=hello functionUid=d583fda0-b193-11e7-b4db-fa163ed77208 poolMgrInstanceId=UthmnZt unmanaged=true ... hello 用に特殊化、プールから外れた #serverlesstokyo
  21. 21. Q : より実用的に使うには? #serverlesstokyo
  22. 22. A : Fission Workflows を活用 #serverlesstokyo
  23. 23. Fission Workflows が新登場 ● Fission の追加コンポーネント ● Function 間の連携を定義 ○ AWS Step Functions 的な役割 ○ 依存関係を JSON または YAML で記述 ○ 並列実行、待ち合わせ、条件分岐 ● 2017 年 10 月 2 日リリース ○ https://github.com/fission/fission-workflows #serverlesstokyo
  24. 24. まとめ ● なぜ Serverless なのか? ○ イメージやコンテナの管理からの解放 ● どうやって実現するのか? ○ 汎用コンテナのプール、呼び出し時の特殊化 ● より実用的に使うには? ○ Fission Workflows でより複雑な処理を組み立て #serverlesstokyo
  25. 25. Enjoy Serverless Kubernetes! Presented by チェシャ猫 (@y_taka_23) #serverlesstokyo
  26. 26. Enjoy Serverless Kubernetes! Presented by チェシャ猫 (@y_taka_23) Containerless #serverlesstokyo

×