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に大別できる
公式ドキュメントに挙げられているComponentを以降でまとめる
Components
Control plane components
- Clusterの管理(スケジュール等)、Cluster event(新しいPodを起動する等)の検出および応答を行う
kube-apiserver
- Kubernetes API server(≠kube-apiserver)の主部分
- Kubernetes API serverは、Control planeのフロントエンドにあたりKubernetes APIを外部に提供し、PodやService(参考:GKE(Google Kubernetes Engine)のServiceについて)などのapiオブジェクトのデータ検証および構成する
etcd
- CoreOSが開発したオープンソースの分散型システム向けkey-valueストア
- 2018年11月にCNCFのGraduatedステージに認定されている
- 参考:CNCFについて
- すべてのKubernetes clusterのデータ(Kubernetes objectの設定など)を保存するBacking storeとして使われる
- etcd clusterは定期的にバックアップすることが重要(下記の2つの方法がドキュメントに記載されている)
- etcdがもともとサポートしているsnapshotを実行し、
$ENDPOINT
に設定した場所にsnapshotを作成する - Amazon Elastic Block Store等のバックアップ機能があるストレージサービス(ストレージボリューム)でetcdが実行されている場合は、ストレージボリュームごとバックアップする
- etcdがもともとサポートしているsnapshotを実行し、
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
- 割愛
参照
- https://kubernetes.io/docs/concepts/overview/components/
- https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
- https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/
- https://github.com/etcd-io/etcd
- https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/
ディスカッション
コメント一覧
まだ、コメントがありません