LoginSignup
40
41

More than 1 year has passed since last update.

kubernetesについて、登場人物をまとめてみた。

Posted at

コンテナオーケストレーションとは?

Docker Swarm、Mesos、Kubernetesに代表される、複数のコンテナをうまく管理するための仕組み。
コンテナが動作するマシンが一つだと、マシンの故障とともに中で動くシステムもダウンしてしまうため、一つのアプリケーションを複数のコンテナに分けて、複数のマシン上で動作させたい。マシンごとのスペック格差も是正したい。こういった悩みを解決するのがコンテナオーケストレーションツール。

Kubernetesとは

Googleによって開発された、コンテナ化したアプリケーションのデプロイ、スケーリング及び管理を行うための、オープンソースのコンテナオーケストレーションシステム。
...要するにDockerコンテナをうまいことやってくれる無料のシステム。

Kubernetesが誕生した歴史

“Kubernetes”(クベルネテス)は、ギリシャ語で航海長または水先案内人を意味し、サイバネティクス(人工頭脳学)の語源でもある。Kubernetesは、当初Joe Beda、Brendan Burns、Craig McLuckieの3人によって開発が始まり、すぐにBrian GrantやTim Hockinなど、他のGoogleのエンジニアも参加するようになり、2014年中ごろにGoogleから初めて発表された。Kubernetesの開発や設計はGoogleのBorgシステムから強い影響を受けており、Borgのトップコントリビュータの多くが開発に参加している。Google内でのKubernetesのもともとのコードネームはProject Sevenであり、スター・トレックのキャラクターで、優しいBorgである、セブン・オブ・ナインの名前に由来する。Kubernetesのロゴの輪にある7つのスポークは、このコードネームに由来している。

Kubernetes v1.0は2015年7月21日(私の誕生日です!)にリリースされた。Kubernetes v1.0のリリースと同時に、GoogleはLinux Foundationと共同でCloud Native Computing Foundation(CNCF)を設立し、Kubernetesを種となる技術として提供した。2018年3月6日には、KubernetesプロジェクトはGitHubにおけるコミット数で第9位に到達し、コントリビューター数とissue数では、Linuxカーネルプロジェクトに次いで第2位となった。

登場人物

image.png

Node...

ノードはKubernetesではワーカーマシン。各ノードはマスターによって管理される。

pod...

Kubernetes上のデプロイの最小単位。1つまたは複数のコンテナ。ネットワークやストレージを共有リソースとしてもつ。コンテナの実行方法に関する使用を持つ。

kube-proxy...

kube-proxyはクラスター内の各nodeで動作しているネットワークプロキシで、KubernetesのServiceコンセプトの一部を実装している。

kubelet...

ポッドによってデプロイされたコンテナがノードで実行されていることの面倒を見るコンポーネント。

Cluster...

特定のnamespaceに属さないリソースのこと。冗長化を担当する。

Master Node...

Controll Planeとも。Kubernetesクラスタ内のリソースの構成と管理に使用するAPIを提供する。

Deployment...

ReplicaSetを管理するリソース。
ローリングアップデートやロールバック等アップデート機能(更新や元に戻す機能)を提供する。

Namespace

同一の物理クラスター上で、複数の仮想クラスターが動作するのをサポートするコンポーネント。

ReplicaSet...

指定したレプリカ数のpodを常に保証してくれるリソース。replicas(pod数), pod template, selector(対象podを特定する情報)というフィールドを持ち、コンテナ数を担保する特性上使用が推奨されない。(Deployまでやってくれないため。)

Scheduller...

コンテナの配置を管理する。新規に作成された各Podや他のスケジューリングされていないPodを稼働させるために最適なNodeを選択。

etcd...

一貫性、高可用性を持ったキーバリューストアで、Kubernetesの全てのクラスター情報の保存場所として利用される。

APIserver...

APIサーバーは、Kubernetes APIを外部に提供するKubernetesコントロールプレーンのコンポーネント。 APIサーバーはKubernetesコントロールプレーンのフロントエンド部分。各nodeに命令を発行する。

kubectl

Kubernetesで利用されるコマンドラインツール。Kubernetesクラスターを制御できる。

ConfigMap

機密性のないデータをキーと値のペアで保存し、podから参照できるようにするもの。コンテナイメージと固有の設定を切り離すことができる。

Secret

機密情報(パスワードやトークン等)を保存・管理し、podから参照するリソース。ファイルの書き方はConfigMapにかなり似ている。

Service

podの集合体を抽象化して公開したもの。podの集合体のDNS名を提供したり、負荷分散を担当する。

40
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
41