初心者向けKubernetesの解説(後半)

gavin.zhou
Jul 3, 2023

長い記事なので、前半と後半の2つに分けて投稿いたします。今回は後半です。

コントロールプレーンのコンポーネント

- Kubernetesのコントロールプレーンでは、Kubernetes APIサーバーがKubernetes APIをエクスポーズします。APIサーバーは、コントロールプレーンのフロントエンドとして機能します。クラスタ内のすべての通信は、このAPIを利用します。たとえば、Kubernetes APIサーバーは、クラスタの状態を表示または変更するためのコマンドを受け付けます。Kubernetes APIサーバーの主な実装はkube-apiserverで、より多くのインスタンスをデプロイすることで水平方向にスケールするように設計されています。kube-apiserverの複数のインスタンスを実行し、これらのインスタンス間でトラフィックのバランスを取ることができます。

- Etcdは、すべてのクラスタデータを格納する高可用性の分散キーバリューストアです。Kubernetesにアプリケーションのデプロイを指示すると、そのデプロイコンフィギュレーションがetcdに保存されます。それがKubernetesクラスタ内の状態を定義し、実際の状態を望ましい状態に一致させるようにシステムが働きます。

- Kubernetesスケジューラは、新しく作成されたPodをノードに割り当てる。これは基本的に、kube-schedulerがクラスタ内でワークロードを実行すべき場所を決定することを意味します。スケジューラーは、Kubernetesのスケジューリング原則、コンフィギュレーションオプション、利用可能なリソースに従って、最も最適なノードを選択します。

- Kubeコントローラマネージャは、クラスタの状態を監視するすべてのコントローラプロセスを実行し、必ずクラスタの実際の状態が目的の状態に一致するようにしてくれます。

- 最後に、クラウドコントローラマネージャは、基盤となるクラウドプロバイダと通信するコントローラを実行します。これらのコントローラは、クラスターをクラウドプロバイダーのAPIに効果的にリンクさせます。Kubernetesはオープンソースであり、さまざまなクラウドプロバイダーや組織で導入されることが理想であるため、Kubernetesは可能な限りクラウドに依存しないようにしています。

ワーカーノードのコンポーネント

- Kubeletは、ワーカーノードの最も重要なコンポーネントです。このコントローラーはkube-apiserverと通信し、新規および変更されたPodの仕様を受け取り、しっかりとPodと関連するコンテナを希望通りに実行させます。また、kubeletはPodのヘルスと状態についてコントロールプレーンに報告します。

- コンテナランタイムは、イメージのダウンロードとコンテナの実行を担っています。Kubernetesは単一のコンテナランタイムを提供するのではなく、コンテナランタイムのプラグイン性を可能にするコンテナランタイムインターフェイスを実装しています。Dockerが最もよく知られたランタイムですが、PodmanとCri-oもよく使われるコンテナランタイムの1つです。

--

--