30
机上の Kubernetes チェシャ猫 (@y_taka_23) NGK2016B 昼の部 (2016/12/17) 形式手法で見るコンテナオーケストレーション

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

  • Upload
    ytaka23

  • View
    716

  • Download
    2

Embed Size (px)

Citation preview

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

机上の Kubernetes

チェシャ猫 (@y_taka_23)NGK2016B 昼の部 (2016/12/17)

形式手法で見るコンテナオーケストレーション

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

Docker だけだと辛い件

● 複数サーバ間クラスタリング

○ コンテナを立てるサーバの選択

○ 監視・自動復旧

○ オートスケーリング・サービスディスカバリ

○ ネットワークの動的設定

● オーケストレーションのレイヤが必要

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

そんなとき、役に立つのが

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

コンテナ配置の仕組み

Master

Node1A

Node2A

NodeX

・・・

User

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

Replica Set の作成リクエスト

Master

Node1A

Node2A

NodeX

・・・

User

A B × 2 組

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

Replica Set の作成リクエスト

API ServerScheduler

Controller Manager

User

Node1

etcd (DB)

× 2 組

A B

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

Replica Set が作成される

API ServerScheduler

Controller Manager

User

Node1

etcd (DB)

A B × 2 組

× 2 組

A B

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

Pod が作成される

API ServerScheduler

Controller Manager

etcd (DB)

A B × 2 組

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

Pod が作成される

API ServerScheduler

Controller Manager

etcd (DB)A B

A B

@ ????

@ ????

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

各 Pod を割り当てるサーバを決定

API ServerScheduler

Controller Manager

etcd (DB)A B

A B

@ ????

@ ????

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

各 Pod を割り当てるサーバを決定

API ServerScheduler

Controller Manager

etcd (DB)A B

A B

@ Node1

@ Node2

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

各サーバでコンテナが立ち上がる

API ServerScheduler

Controller Manager

Kubelet

Node1

etcd (DB)A B

A B

@ Node1

@ Node2

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

各サーバでコンテナが立ち上がる

API ServerScheduler

Controller Manager

Kubelet

Node1

etcd (DB)A B

A B

@ Node1

@ Node2

A B

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

コンテナの立ち上げ完了

Master

Node1A B

Node2A B

NodeX

・・・

A B × 2 組

User

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

Kubernetes の特徴

● データを保持するのは etcd のみ

○ 状態は一元管理 + 各コンポーネントによる書き換え

○ 事前状態・事後状態によるモデリング

● 各コンポーネントが自律的に動作

○ システム全体の状態遷移が複雑

○ 全数探索によるあらゆる遷移シナリオの生成

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

そんなとき、役に立つのが

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

Alloy Analyzer の特徴

● 形式手法の一種、モデル検査器

● 条件を満たす例・満たさない例を全探索

● 発見した具体例を可視化

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

Kubernetes + Alloy の特徴

● データを保持するのは etcd のみ

○ 状態の一元管理 + 各コンポーネントによる書き換え

○ 事前状態・事後状態によるモデリング

● 各コンポーネントが自律的に動作

○ システム全体の状態遷移が複雑

○ 初期状態と最終状態を与える

○ 全数探索によるあらゆる遷移シナリオの生成

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

Alloy によるモデリング例

https://gist.github.com/y-taka-23/c13a222aea26195811ca4a19951b86ac

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

初期状態

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

Replica Set が作成される

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

Pod が作成される

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

各 Pod を割り当てるサーバを決定

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

各サーバでコンテナが立ち上がる

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

最終状態

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

まとめ

● Kubernetes によるオーケストレーション

○ 個々のサーバを隠蔽したコンテナ配置

● Alloy で Kubernetes をモデリング

○ etcd の状態に対する書き換えイベントの列とみなす

● 動作のシナリオを自動生成

○ 初期状態と最終状態を与えると遷移を自動補間

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

Have a Nice Kubernetes Life!

Presented by

チェシャ猫 (@y_taka_23)