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