LoginSignup
1
3

More than 5 years have passed since last update.

Kubernetes :コンポーネントのアーキテクチャ

Posted at

「Kubernetes完全ガイド」 を元に、Kubernetesのコンポーネントのアーキテクチャをまとめます。

Kubernetesクラスタは下記の7つのコンポーネントから構成される、kube-apiserverを中心とした分散システム。
* etcd
* kube-apiserver
* kube-scheduler
* kube-controller-manager
* kubelet(+コンテナランタイム)
* kube-proxy(+Network Plugin)
* kube-dns(CoreDNS)

image.png
出典:(https://www.amazon.co.jp/Kubernetes%E5%AE%8C%E5%85%A8%E3%82%AC%E3%82%A4%E3%83%89-impress-top-gear-%E9%9D%92%E5%B1%B1/dp/4295004804)

etcd

OSSの分散KVS(Key-Value-Store)で、Kubernetesクラスタの登録情報格納領域。
奇数台(3/5/7)でクラスタを組む事が推奨。

kube-apiserver

Kubernetes APIを提供するコンポーネント。
kubectlはkube-apiserverにリクエストを送信する事で、DeploymentやService等の作成、削除を実施

例)kubectlでPodの登録時、kube-apiserverはPod情報をetcdに書き込むが、起動ノードが決まっていない為、ノード未割当となる。
image.png

kube-schedulerは、このノード情報をkube-apiserverにリクエストを送って書き換えてスケジューリング。
kubeletが続いてノード上でPodを起動

image.png

kube-scheduler

起動するノードが未割当のPodについて、ノードの状態やAffinity等を考慮して、起動ノードを決定

kube-controller-manager

様々なコントローラを実行するコンポーネント。例)DeploymentやReplicaSetの状態を監視しながら、必要なPod/レプリカを作成

kubelet

各Kubernetesノード上で動作するコンポーネント。Docker等のコンテナランタイムと連携し、コンテナの起動・停止を実施。

kube-proxy

各Kubernetesノード上で動作するコンポーネント。Service作成時に、ClusterIPやノードポート宛のトラフィックのPodへの転送方式を決定。
* userspace : (カーネルでなく)ユーザースペースで処理
* iptables: カーネル上のiptablesで処理する為、高速・安定処理
* ipvs: 大規模環境用

別途、FlannelやOpen vSwitch等、オーバレイネットワークを構築するソフトウェアとの連携が必要

kube-dns(後継:CoreDNS)

Kubernetesクラスタ内のDNSサーバ。
Service作成時やServiceに紐づくPodに変更があった際に、DNSエントリを連携して書き換える。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3