お疲れ様です。
同じ映画を通常、4DX、爆音の上映方法で3回見た宮﨑です。
以前、こちらの記事でAzure Kubernetes Serviceについて調べた際に、Kubernetesクラスターという新しい用語が出てきました。今後Kubernetes Service(以下k8s)を学んでいくうえで、まずはひとつひとつの用語の意味を調べといたほうがいいなと感じたので、記事にしてまとめてみます。
Kubernetesクラスターの構成について
Kubernetesクラスターはコンテナ化されたアプリケーションを実行するためのノードマシン群で、少なくとも1つのコントールプレーンと1つ以上のノードで構成されています。
まずはコントールプレーンから見ていきます。
コントールプレーン
Kubernetesクラスター内で、クラスターの全体的な状態と操作を管理するためのコンポーネントの集合になります。k8sの動作を担う心臓部分なので、MasterやAdminとも呼ばれたりします。
構成しているコンポーネントを1つずつ見ていきます。
◆kube-apiserver
Kubernetesのコンポートネントすべてが連携されており、Kubernetesクラスターの中核的なコンポーネントです。クラスター全体の状態を管理し、認証や認可、適切なコンポーネントへのルーティングなど重要な役割を果たします。
◆Cloud Controller Manager(CCM)
特定のクラウドプロバイダー(たとえば、AWS、Google Cloud、Azureなど)に特化したリソースとの連携を担当します。CCMはクラウドプロバイダー固有のAPIを使用して、ノード、ロードバランサー、ディスク、ボリュームなどのリソースを操作します。
◆Kube-Controller-Manager(KCM)
k8sの操作全般を担当しています。異なるリソースの状態を監視し、望ましい状態に調整するためのコントローラを実行したり、クラスター内のリソース管理、状態の維持など、特定のリソースの状態を監視し必要に応じて調整を行うことで、システムの自己修復能力を向上させます。
◆etcd
K8sの全てのクラスター情報の保存場所として利用されており、一貫性、高可用性を持ったkey/valueストアです。
◆kube-scheduler
新しいPod(コンテナのグループ)をノードにスケジューリングする役割を果たします。Podが作成された際にそのノードに適したPodを選択するなど、アプリの効率的な配置を担当することでリソースの均等な利用やノードの負荷分散を実現しています。
以上がコントールプレーンの主なコンポーネントです。続いてノードを見ていきます。
ノード
稼働中のPodの管理やKubernetesの実行環境を提供する場所です。実際にコンテナが動作する場所になります。ワーカーとも呼ばれたりします。
こちらも構成しているコンポーネントを見ていきましょう。コントールプレーンに比べて数は少なめです。
◆kubelet
コントロールプレーンとノードをつないでくれるものです。コントロールプレーンから指示を受けてPodを実行し、クラスター内でアプリケーションを実行するための物理的な基盤を提供します。
◆kube-proxy
ノードのネットワークルールをメンテナンスし、クラスターの内部または外部のネットワークセッションからPodへのネットワーク通信を可能にしてくれるものです。クラスター内のサービスのネットワークトラフィックの制御を担当する重要なコンポーネントです。
上記2つに加えて、コンテナの実行を担当するソフトウェア(Dockerなど)としてコンテナランタイムがあります。以上がノードのコンポーネントになります。
まとめ
・Kubernetesクラスターはコントールプレーンとノードで構成されている。
・コントールプレーンには様々なコンポーネントがある。
・コントールプレーンとkubeletが通信している。
・ノードのコンテナランタイムでコンテナを動かす。