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.

机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B

2,152 views

Published on

2016 年名古屋合同懇親会 (NGK2016B) の LT で使用したスライドです。Kubernetes がコンテナを配置する仕組みをモデル検査器 Alloy を用いてモデリングし、初期状態と最終状態を与えてその間の状態遷移を自動で発見します。

Published in: Technology
  • Be the first to comment

机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B

  1. 1. 机上の Kubernetes チェシャ猫 (@y_taka_23) NGK2016B 昼の部 (2016/12/17) 形式手法で見るコンテナオーケストレーション
  2. 2. Docker だけだと辛い件 ● 複数サーバ間クラスタリング ○ コンテナを立てるサーバの選択 ○ 監視・自動復旧 ○ オートスケーリング・サービスディスカバリ ○ ネットワークの動的設定 ● オーケストレーションのレイヤが必要
  3. 3. そんなとき、役に立つのが
  4. 4. コンテナ配置の仕組み Master Node1 A Node2 A NodeX ・・・ User
  5. 5. Replica Set の作成リクエスト Master Node1 A Node2 A NodeX ・・・ User A B × 2 組
  6. 6. Replica Set の作成リクエスト API Server Scheduler Controller Manager User Node1 etcd (DB) × 2 組 A B
  7. 7. Replica Set が作成される API Server Scheduler Controller Manager User Node1 etcd (DB) A B × 2 組 × 2 組 A B
  8. 8. Pod が作成される API Server Scheduler Controller Manager etcd (DB) A B × 2 組
  9. 9. Pod が作成される API Server Scheduler Controller Manager etcd (DB) A B A B @ ???? @ ????
  10. 10. 各 Pod を割り当てるサーバを決定 API Server Scheduler Controller Manager etcd (DB) A B A B @ ???? @ ????
  11. 11. 各 Pod を割り当てるサーバを決定 API Server Scheduler Controller Manager etcd (DB) A B A B @ Node1 @ Node2
  12. 12. 各サーバでコンテナが立ち上がる API Server Scheduler Controller Manager Kubelet Node1 etcd (DB) A B A B @ Node1 @ Node2
  13. 13. 各サーバでコンテナが立ち上がる API Server Scheduler Controller Manager Kubelet Node1 etcd (DB) A B A B @ Node1 @ Node2 A B
  14. 14. コンテナの立ち上げ完了 Master Node1 A B Node2 A B NodeX ・・・ A B × 2 組 User
  15. 15. Kubernetes の特徴 ● データを保持するのは etcd のみ ○ 状態は一元管理 + 各コンポーネントによる書き換え ○ 事前状態・事後状態によるモデリング ● 各コンポーネントが自律的に動作 ○ システム全体の状態遷移が複雑 ○ 全数探索によるあらゆる遷移シナリオの生成
  16. 16. そんなとき、役に立つのが
  17. 17. Alloy Analyzer の特徴 ● 形式手法の一種、モデル検査器 ● 条件を満たす例・満たさない例を全探索 ● 発見した具体例を可視化
  18. 18. Kubernetes + Alloy の特徴 ● データを保持するのは etcd のみ ○ 状態の一元管理 + 各コンポーネントによる書き換え ○ 事前状態・事後状態によるモデリング ● 各コンポーネントが自律的に動作 ○ システム全体の状態遷移が複雑 ○ 初期状態と最終状態を与える ○ 全数探索によるあらゆる遷移シナリオの生成
  19. 19. Alloy によるモデリング例 https://gist.github.com/y-taka-23/c13a222aea26195811ca4a19951b86ac
  20. 20. 初期状態
  21. 21. Replica Set が作成される
  22. 22. Pod が作成される
  23. 23. 各 Pod を割り当てるサーバを決定
  24. 24. 各サーバでコンテナが立ち上がる
  25. 25. 最終状態
  26. 26. まとめ ● Kubernetes によるオーケストレーション ○ 個々のサーバを隠蔽したコンテナ配置 ● Alloy で Kubernetes をモデリング ○ etcd の状態に対する書き換えイベントの列とみなす ● 動作のシナリオを自動生成 ○ 初期状態と最終状態を与えると遷移を自動補間
  27. 27. Have a Nice Kubernetes Life! Presented by チェシャ猫 (@y_taka_23)

×