Slide 1

Slide 1 text

Kubeletについて Kubernetes Internal #4(2021/01/13) @bells17

Slide 2

Slide 2 text

▶ @bells17 ▶ Software Engineer ▶ IDC Frontier inc. ▶ 普段やってること: + Kubernetes 関連コンポーネントの開発 + Kubernetes as a Service開発の調査・研究 ▶ Kubernetes SIG-Docs Japanese localization reviewer ▶ Kubernetes Internal Organizer ▶ #kubenews ▶ @bells17_

Slide 3

Slide 3 text

今⽇話すこと ▶ Kubeletの概要

Slide 4

Slide 4 text

注意点 ▶ Kubernetes v1.19ベースでのお話になります

Slide 5

Slide 5 text

Kubelet本体についての詳細 はこの本に書いてます ▶ 技術書典: http://bit.ly/tbf-kubelet ▶ Booth: http://bit.ly/booth-kubelet Kubeletの詳細が気になる⽅は 良ければ買ってください! あとJuly Tech Festa winterでもKubeletについて 話します

Slide 6

Slide 6 text

Kubernetes Core Component

Slide 7

Slide 7 text

https://github.com/kubernetes/website/blob/fb6364da0afd19e8a9515aaae2de9bc74a0a6abd/static/images/docs/components-of-kubernetes.png

Slide 8

Slide 8 text

Core Component ▶ etcd: API Serverのバックエンドで使⽤されている分散型のKVS ▶ Control Plane ▶ API Server: KubernetesのAPIリクエストを処理するサーバー ▶ Kube Controller Manager: Kubernetesの様々なリソースのためのロジックを動かす 様々なコントローラーを動作させるマネージャー ▶ Cloud Controller Manager: Kubernetesとクラウド(実⾏基盤)を連携するための コントローラーを動作させるマネージャー ▶ Scheduler: PodをどのWorker Nodeに配置するかを決める ▶ Worker Node ▶ Kubelet: Worker Nodeで実⾏するコンテナを管理するアプリケーション ▶ Kube Proxy: Serviceリソースに基づくネットワーク設定を⾏うアプリケーション

Slide 9

Slide 9 text

https://github.com/kubernetes/website/blob/fb6364da0afd19e8a9515aaae2de9bc74a0a6abd/static/images/docs/components-of-kubernetes.png

Slide 10

Slide 10 text

Kubeletとは?

Slide 11

Slide 11 text

Kubeletとは? ▶ コンテナランタイムと連携しWorker Nodeで動かすコンテナとその関連 リソースを管理する ▶ Static PodをMirror PodとしてAPI Serverに登録する ▶ Kubeletを動かしているサーバーをKubernetesクラスターのWorker Node として登録する ▶ Healthcheckや各種メトリクス情報などを公開するWeb Serverを起動 ▶ コンテナへのPortForward/ContainerLog/Execなどのエンドポイントもある ▶ dockershimを使う場合はdockershimサーバーの起動も Kubeletの機能の(あくまで)概要としてはこのくらい

Slide 12

Slide 12 text

Kubeletとは? ▶ コンテナランタイムと連携しWorker Nodeで動かすコンテナとその関連 リソースを管理する ▶ Static PodをMirror PodとしてAPI Serverに登録する ▶ Kubeletを動かしているサーバーをKubernetesクラスターのWorker Node として登録する ▶ Healthcheckや各種メトリクス情報などを公開するWeb Serverを起動 ▶ コンテナへのPortForward/ContainerLog/Execなどのエンドポイントもある ▶ dockershimを使う場合はdockershimサーバーの起動も Kubeletの機能の(あくまで)概要としてはこのくらい 特にここらへんの実装が超巨⼤

Slide 13

Slide 13 text

Kubeletの中では数多くのコンポーネント動いており、数⼗〜数百以上の goroutineが同時に動き、チャネルを通じてイベントを処理する

Slide 14

Slide 14 text

▶ Startup/Liveness/Readinessの各Probeはgoroutineによって制御される ▶ そのため、例えば1ノードで同じPodが100動いており、Startup/ Liveness/ReadinessそれぞれのProbeが設定されていた場合には、100*3 で300のgoroutineがそれぞれで動くことになる ▶ configMapAndSecretChangeDetectionStrategyがデフォルト(=watch)の 場合は、Podに設定されたSecret/ConfigMapの数だけgoroutineによる対 象のSecret/ConfigMapの変更監視を⾏うReflectorが起動する ▶ etc 中には動的に起動される goroutineもいくつか存在する

Slide 15

Slide 15 text

Kubeletの全体像

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content