メモ置き場

Kubernetesのコンポーネントメモ

Control plane

  • kube-apiserver
    • Kubernetes APIを提供しているコンポーネント
  • etcd
    • クラスタの情報を保存するために使用されるキーバリューストア
  • kube-scheduler
    • PodをどのNodeに割り当てるか決定するコンポーネント
    • 1クラスタ内に複数のスケジューラを動作させることができる
  • コントローラ
    • クラスタの状態をAPIから監視し、現在の状態を目的の状態(desired state)に近づけるための操作を行うコンポーネント
      • 制御ループ(control loop): システムの状態を制御する無限ループ
    • API経由でリソースを操作する場合と、コントローラが直接リソースを管理する場合がある。
    • kube-controller-manager: 複数のコントローラをまとめたビルドインのコントローラ
  • cloud-controller-manager
    • クラスタが外部のクラウドAPIを使用するときに経由するコンポーネント
      • 外部クラウド固有処理への依存範囲を限定させるため

Node

  • kubelet
    • クラスタ内の各ノードで動作するdaemon
    • PodSpecを受け取り、それに記述されている通りにコンテナを動作させる。
  • kube-proxy
    • Node間・Pod間の通信を制御するネットワークプロキシ
    • OSのパケットフィルタリングが利用可能な場合はそれを利用し、利用できない場合は自身でトラフィックを転送する
  • コンテナランタイム
    • Podの各コンテナを動作させる

(kindでの確認メモ)

  • 1control-plane, 3worker, kindest/node:v1.23.0の構成
  • Control plane
    • kindではそれぞれcontrol-plane NodeにPodとしてデプロイされている
      • それぞれ.metadata.ownerReferencesにはcontrol-plane Nodeが設定されている
    • kube-apiserver-${cluster}-control-plane
    • etcd-${cluster}-control-plane
    • kube-scheduler-${cluster}-control-plane
    • kube-controller-manager-${cluster}-control-plane
    • cloud-controller-managerはなし
  • Node
    • kubelet: systemdのserviceとしてdaemonとして動作
    • kube-proxy: DaemonSetとしてデプロイされている
    • コンテナランタイム: containerdが動作

参考