Kubernetes Componentsについて

概要

  • Kubernetes ComponentsはKubernetesのシステムの構成要素
  • Control planeのみで実行されるControl plane componentsと、すべてのNodeで実行されるNode componentsに大別できる
    • KubernetesのClusterは、コンテナ化されたアプリケーションを実行するNodeと呼ばれるマシンの集合
    • NodeはアプリケーションのPodを動作させるWorker Nodeと、Control planeを実行する(=Worker NodeおよびPodを管理する)Master Nodeに大別できる
Kubernetes componentの概要

公式ドキュメントに挙げられているComponentを以降でまとめる

Components

Control plane components

  • Clusterの管理(スケジュール等)、Cluster event(新しいPodを起動する等)の検出および応答を行う

kube-apiserver

  • Kubernetes API server(≠kube-apiserver)の主部分

etcd

  • CoreOSが開発したオープンソースの分散型システム向けkey-valueストア
  • 2018年11月にCNCFのGraduatedステージに認定されている
  • すべてのKubernetes clusterのデータ(Kubernetes objectの設定など)を保存するBacking storeとして使われる
  • etcd clusterは定期的にバックアップすることが重要(下記の2つの方法がドキュメントに記載されている)
    • etcdがもともとサポートしているsnapshotを実行し、$ENDPOINTに設定した場所にsnapshotを作成する
    • Amazon Elastic Block Store等のバックアップ機能があるストレージサービス(ストレージボリューム)でetcdが実行されている場合は、ストレージボリュームごとバックアップする

kube-scheduler

  • 新しく作成されたPodがどのNodeで実行されるか選択する
    • 実行されるNodeはリソース要件、ハードウェア/ソフトウェア/ポリシーの制約などから選択される

kube-controller-manager

  • Controllerを実行する
  • Controllerは下記の4種類
    • Node controller: Nodeが落ちたことを検知し、応答する
    • Job controller: Jobオブジェクトを監視し、Podを作成してタスクを完了させる
    • EndpointSlice controller: ServiceとPodを連携するためのEndpointSliceオブジェクトを設定する
    • ServiceAccount controller: 新しいnamespaceのデフォルトの ServiceAccount を作成する

cloud-controller-manager

  • クラウド固有の制御ロジックを埋め込み、ClusterとクラウドプロバイダーのAPIにリンクする
  • オンプレミス環境でKubernetesを実行している場合はcloud-controller-managerは存在しない
  • クラウドプロバイダーに関係しうるControllerは下記の3種類
    • Node controller: クラウド上に配置されたNodeが削除されたかどうかを確認する
    • Route controller: 基盤となるクラウド上でルートを設定する
    • Service controller: クラウドプロバイダーのロード バランサーの作成、更新、および削除用

Node components

  • 稼働中のPodの管理、Kubernetes実行環境の提供を行う

kubelet

  • 各Nodeで、コンテナがPodでPodSpecの設定どおりに実行されていることを確認する

kube-proxy

  • 各Nodeで実行されるネットワークプロキシであり、Cluster内外のネットワークセッションからPodへの接続を許可する
  • Serviceとして実装される

Container runtime

  • コンテナを実行するためのソフトウェア
    • containerd
    • CRI-O
    • Docker Engine
    • Mirantis Container Runtime

Add ons

  • 割愛

参照