Kubernetes(ギリシア語:κυβερνήτης。読み方:クベルネーテス。意味:按針、船長、知事。)はコンテナアプリのデプロイとスケーリングの自動化に対するプラットフォームだ。もともとGoogleに実装されて2015年Apache License 2.0でオープンソースとして公開された。
Kubernetesと同じようなプラットフォームはAmazon ECSやDocker Inc.のSwarm(スウォーム)がある。
なぜKubernetes?
DockerはKubernetes, ECSなどのプラットフォームを利用せずにも使える。しかし、コンテナアプリは増えたら、多くのコンテナの管理に適当なツールがないと困るだろう。CLIツールは当たり前だが多くのコンテナのクラウドの管理にGUIも必要だろう。
Kubernetesのきっかけ
先週は初めてのDockerとECSを利用するプロジェクトをリリースして、ベンダーロックインも避けるためにECS以外のDockerプラットフォームも調べたほうがいいと思った。Twitterも多くの記事でもKubernetesというものは人気そうでいったいどんなものかを調べることにした。
アーキテクチャ
主な要素
-
Node(ノード)
- コンテナを運用できるマシン(物理、仮想)
- 全ノードにインストールされるKubeletというサービスがノードとポッドの管理APIを提供する
-
Pod(ポッド)
- 1~nのコンテナの集まり
- 一つのコンテナは一つのマイクロサービスだ(MySQL、Apache、とか)
- ポッドのコンテナは同じ物理マシン、IPアドレス、などのリソースを共有する
-
Service(サービス)
- 1~nのポッドの集まり
-
Volume(ボリューム)
- ポッドのライフサイクルと一緒(コンテナが消されてものボリュームが残る、ポッドが消されたらボリュームも消される)
- ポッドのコンテナはボリュームを共有する
-
Namespace(ネームスペース)
- 同じ物理クラスターの中の仮想クラスター
- プロジェクトとチームが多い環境に向けているリソースアロケーション方法
ほかのプラットフォームとの比較
Kubernetes | ECS | Docker Cloud Swarm | |
---|---|---|---|
スポンサー | Google, RedHat, Microsoft, IBM | Amazon | Docker Inc. |
クラウド対応 | GKE(Google), Azure(Microsoft), OpenShift(RedHat), Bluemix(IBM), などなど | AWS | Docker Cloud |
スケーリング単位 | ポッド | タスク | タスク |
デプロイ単位 | サービス | サービス | サービス |
機能(特にGUI) | かなり多い | 普通 | 少ない、まだbeta... |
設置 | クラウドによって異なる、複雑(カスタマイズ性高いから) | 普通 | 簡単 |
Kubernetesの印象
確かにでかいプラットフォームだ。KubernetesではECSのようなサービスを自分のサーバ環境に設置できそうだ。要素、ツール、用語などについて勉強することはまだ多い。Kubernetesのツールはまだあまり触っていないので使いやすいか、実際にどれぐらい便利か、とかの判断はまだできない。ローカル環境の設置とアプリのデプロイのサンプルは次の記事までお待ちください。