目的
- Kubernetesとは何かを知る
- Kubernetesの構成と基本的な用語について知る
Kubernetesとは
kubenetes(クーベネティス・クバネティス)とは、コンテナのオーケストレーションツールである。
オーケストレーションとは、システム全体の統括をし複数のコンテナ(=サーバー)を管理することができるもの。
そのため、複数のサーバーが存在し、それぞれのサーバーの中で更に複数のコンテナが存在するのが前提と言える。
コンテナを作成するのみのdocker composeとは異なり、kubernetesはコンテナの作成・監視・維持を行うため、常に望ましい状態に保つことができるツールである。
またkubenetesは、よくk8sと略される。
構成と用語
マスタノード
マスタノードは、コンテナを動かすのではなく、コンテナ(=ワーカノード)を管理する 役割を担っている。
コントロールプレーン(制御盤) というものでワーカノードを管理している。
マスターノード(=コントロールプレーン)は以下のような構成になっている。
kube-apiserver
外部とやり取りをするためのコンポーネントで、kubectlコマンドからの命令を受け取って実行する。
etcd
クラスター情報を管理するキーバリュー型のデータベース(noSQL)。
kube-scheduler
Podをワーカノードに割り当てたり、状態を監視する役割のコンポーネント。割り当てがない場合は、そのワーカノードにPodを割り当てる。
kube-controller-manager
controllerの統括・管理を行うコンポーネント。
cloud-controller-manager
クラウドサービスと連携を行う。
ワーカーノード
ワーカーノードは、実際にコンテナを動かす役割を担っていて、マスタノードによって管理されている。
管理者の方で設定などをいじるのはマスタノードであるため、直接ワーカノードを操作することはない。
ワーカノードの構成
kubelet
マスタノードのkube-shedulerと連携していて、ワーカノード上にPodの設置を行う。またPodの状況をkube-shcedulerに通知することも行っている。
kube-proxy
ネットワーク通信のルーティングをする仕組み。
クラスター
マスタノードとワーカノードで構成されたk8sの一群をのことをクラスターと言う
マスタノードに設定された内容によってワーカノードが自律的に動くためクラスターは自律的に動くと言える
クラスターの構成図参照
Pod
k8sでは、コンテナはPodという単位で管理されていて、コンテナとボリュームがセットになったものになる。
基本的には、1Pod 1コンテナだが、複数のコンテナにすることも可能で、コンテナごとが連携したプログラムの場合などに複数のコンテナを1Pod内で管理することもある。
Service(サービス)
Podをまとめて(束ねる)管理するもので、単一のサービスが管理するPodは、基本的に同一のPodになる。異なる構成のPodは違うサービスが管理する
また、サービスで管理するPodは、マスタノードを跨ぐケースの存在する。
さらに、ロードバランサー(負荷分散装置)の役割を担っている。サービスには自動的に固有のIPアドレス(Cluster IP)が割り振られており、本物のロードバランサー(もしくはIngress)はそのIPアドレスに対してアクセスを行い、アクセスされたサービスは複数のPodに対して適切に割り振る。
レプリカセット(レプリカ)
Podの数を管理するもの。そのためPodはレプリカセットとアクセスを管理するサービスの2つによって管理されている。またレプリカセットにより管理されている同一構成のPodをレプリカ (複製品)という
レプリカセットは、単独で使用することはなく、後述するデプロイメントとセットで使用する。
デプロイメント
Podのデプロイを管理するもので、Podがどのイメージを使用するかなどのPodに関する情報を持っている。
リソース
前述したPodやサービス・デプロイメントなどのことをまとめて、リソースという。リソースは、他にもさまざまなものがあるが(cronjobなど)基本的なリソースは上記で説明したものになる。
参考資料