最近のKubernetesと
Docker Machine / Swarmの話
Kazuto Kusama @jacopen
Tokyo was captured by Enlightened
進化速い
9月 10月 11月 12月v0.2
v0.3
v0.4
v0.5
v0.6
v0.7
.1 .2 .3 .4
.1 .2 .3 .4 .5 .6
.2
前回 今回
kubectl
新しいコマンド 従来のkubecfg.shも、今の所使えるが・・・
Persistence Disk
GCEの永続ディスクをPodにマウントできる。Cloud StorageではなくてGCEの永続ディスク
Namespace
Pod/Replication Controller/Serviceなどを分離出来る development, productionみたいなNSを作るイメージ
Services v2
ServiceがIPアドレスを持つようになった
Services v2
内部的にはiptablesのREDIRECT
Git Based Volumes
VolumesにGitRepoを指定することで、 コンテナ起動時に指定場所にcloneされる?(未確認)
Heapster
コンテナのリソース利用状況を収集する
Heapster
コンテナ 収集 保存 可視化
Logging(Fluentd & ES)
k8sの標準ログコレクタにFluentdが採用された
ENABLE_NODE_LOGGING=trueLOGGING_DESTINATION=elasticsearch
コンテナに環境変数を設定することで有効化
コンテナのLog取得
kubectl log <pod名> で、コンテナのログが取れる Fluentdとかelasticsearch関係なく、直接取ってるっぽい
• RoadmapやIssueを読んで、今後出てきそうな機能を ピックアップ
• 全て網羅しているわけでなく、気になったものだけを抜粋
• 単に英語力不足で見落としているものも・・・あるかも
負荷に応じたスケジューリング• 現在のスケジューリングは単にラウンドロビンするだけで、賢くない
• cAdvisorの情報を参考に、負荷やリソース利用状況に応じたスケジューリングができるようになる
リソース制限
• コンテナやPodに対してリソース制限をかけられるようにする
• コンテナはdockerがcgroupsによる制限を提供している
• じゃあPodはどうする・・・?
• Googleのlmctfyを参考に実装していってるぽい
• その先にはQoS Tierという構想があるっぽい
Replication ControllerとPod Templateの分離
• Replication Controllerは、自身のコンフィグ内にあるPodTemplate定義を元にPodを複製していく。
• このPodTemplateは独立した概念とするべきではないか、という話
• PodTemplateが独立したリソースになれば、Replication Controller以外 (例えばCron jobとか、何かのフックとか)で活用できるよね、という考え方
ラベルの強化
• ラベルはセレクタとして使われている。たとえばServiceは、指定されたラベルのPodにトラフィックを転送している
• このセレクタ機能が強化される
• key is in [“nginx”, “apache”] みたいな感じで、複数ラベルを付けられるようになる
• key is not in [“development”, “qa”] みたいな感じで、除外するラベルを指定できるようになる
k8s on k8s
• 既にk8sは、それ自身(API serverなど)をk8s上でホストできるようになっているが、これがもっと推し進められるらしい?(あんま追ってない)
来年、Productionリリース
Docker Machine / Swarmの話
12月4日 Dockerがマルチホストのコンテナ環境構築/管理を行うツールを発表
Docker Machine
Docker Swarm
Docker Compose
Dockerが使える環境を一発で作ってくれる
https://github.com/docker/machine
DockerのClusterを組んでくれる
https://github.com/docker/swarm
よーわからんちん
Docker Machine
• 対応している IaaS
• EC2
• DigitalOcean
• Azure
• Vagrant
Docker Swarm
• DockerのClusterを組んでくれる
manager
node
node
node
token, etcd, etc…
swarm
swarm
swarm
node側のswarmは、自身の docker endpointをadvertise
swarm
manager側のswarmは、 docker互換のAPIを提供。 各nodeにリクエストを分配
clientからは、普通の dockerに見える
Docker Swarm
• 今の所、スケジューリングは単なるランダム • 複数インスタンスを管理するような機能は無し • k8sのServicesのような概念も無し
• ホストがダウンした時に、他ホストにフェイルオーバーするような仕組みも無し
Composeと組み合わせたときに本領を発揮する?
参考情報
Kuberneteshttps://github.com/GoogleCloudPlatform/kubernetes/
Kubernetes Advent Calendar
Docker Swarmhttps://github.com/docker/swarm
Docker Machinehttps://github.com/docker/machine
http://qiita.com/advent-calendar/2014/kubernetes
まだ空き枠あるよ!