Kubernetesの基本用語について図も使用してまとめます。
記載内容は基礎中の基礎になる部分です。
前提
Dockerの使用経験あり、又はどのようなものなのか基本部分は分かっていること。
Kubernetesとは
Kubernetesは、多数のコンテナに対する運用管理作業(コンテナオーケストレーション)を自動化するシステム。
運用管理とは、例えば1つのコンテナにアクセスが集中しないように複数コンテナにアクセスを分配するなど。
Kubernetesの基本概要図
以降、以下の図を元に基本用語を解説します。
基本用語
Cluster
ClusterはKubernetesのリソースを管理する集合体のこと。
リソースとは、図にあるようなNodeやPodのことです。
その中のリソースで一番大きな概念がNodeになります。
Clusterは1つのMaster Nodeと複数のNodeから構成されます。
Node
Nodeとはホストのことです。ホストとは、GCPであればCompute Engineのインスタンス、AWSであればEC2のインスタンスになります。
上記の通り、NodeにはMaster NodeとNodeがあります。
Master NodeはKubernetesを管理する以下の管理コンポーネントで構成されています。
- Kube apierver:KubernetesのAPIを公開する。kubectl(※1)からの操作を受け付ける役割があります。
- etcd:分散KVS。クラスタのバッキングストアとして使用される。
- Kube scheduler:コンテナを配置する最適なNodeを選択する。
- Kube controller manager:リソースを制御する。
尚、GCPのKubernetes(GKE)を使用する場合は、Master Nodeを意識する必要はないです。
Nodeはコンテナ化されたアプリケーションなどを実際に実行するホストになります。
※1 kubectl:クラスタ内のリソースの情報を取得したり操作したりするコマンドラインツール。例えば、クラスタ内のNodeの一覧を取得したりできる。
Pod
Podはコンテナの集合体です。
PodはNodeの中で動作し、1つ以上のコンテナを持っています。
Kubernetesにデプロイする場合は、Pod単位に行います。
Container
Dockerコンテナのことです。
ReplicaSet
図にはないですが、押さえておくべき用語です。
ReplicaSetとは、同一仕様のPodを複数生成する仕組みです。
図で言えば、コンテナA、Bが動作するPodを必要な数(レプリカ数)生成して管理します。
Service
これも図にはないです。
Serviceは、Podにアクセスするための経路を定義します。
Serviceにはいくつか種類があり、以下のようなものがあります。LoadBalancerなんかは有名ですよね。
- ClusterIP:クラスタ内の内部IPアドレスでServiceを公開可能にする。Pod間のアクセスをServiceを介して可能にする。
- NodePort:基本はClusterIPと同じ。但し、グローバルにポートを開放する。
- LoadBalancer:各クラウドで提供されているロードバランサーと連携する。
- ExternalName:クラスタ内から外部ホストに接続する時の名前解決を可能にする。
Deployment
最後にDeployment。こちらも図にはないです。
DeploymentはReplicaSetの上位リソースになり、ReplicaSetを管理します。
ReplicaSetがPodを管理・操作するのと同様に、ReplicaSetはDeploymentに管理・操作されます。
関係としては以下のようになります。
Deployment → ReplicaSet → Pod
DeploymentはReplicaSetの新しいバージョンのリリースを可能とし、世代管理も可能にします。
世代管理しているので、前のバージョンに戻すことができます(ロールバック)。
この仕組があるので、リリースしたものの問題があったため、元に戻したい場合に簡単に戻せるようになります。
まとめ
まだまだ知っておくべき用語はあるのですが、最低限押さえておくべき用語について説明を書きました。
私自身もKubernetesは触り始めたばかりなので、必要に応じて追記して行けたらと考えています。