Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubeletについて/Kubelet

3499a1d71fa70b8ee44816ca9e7329fe?s=47 bells17
January 13, 2021

 Kubeletについて/Kubelet

Kubernetes Internal #4 (https://k8sinternal.connpass.com/event/199410/) で使用した、Kubelet説明の補足のためのスライドです。
動画はこちらになります。
https://youtu.be/gWS38gSiDZ0

3499a1d71fa70b8ee44816ca9e7329fe?s=128

bells17

January 13, 2021
Tweet

Transcript

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

  2. ▶ @bells17 ▶ Software Engineer ▶ IDC Frontier inc. ▶

    普段やってること: + Kubernetes 関連コンポーネントの開発 + Kubernetes as a Service開発の調査・研究 ▶ Kubernetes SIG-Docs Japanese localization reviewer ▶ Kubernetes Internal Organizer ▶ #kubenews ▶ @bells17_
  3. 今⽇話すこと ▶ Kubeletの概要

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

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

    あとJuly Tech Festa winterでもKubeletについて 話します
  6. Kubernetes Core Component

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

  8. 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リソースに基づくネットワーク設定を⾏うアプリケーション
  9. https://github.com/kubernetes/website/blob/fb6364da0afd19e8a9515aaae2de9bc74a0a6abd/static/images/docs/components-of-kubernetes.png

  10. Kubeletとは?

  11. Kubeletとは? ▶ コンテナランタイムと連携しWorker Nodeで動かすコンテナとその関連 リソースを管理する ▶ Static PodをMirror PodとしてAPI Serverに登録する

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

    ▶ Kubeletを動かしているサーバーをKubernetesクラスターのWorker Node として登録する ▶ Healthcheckや各種メトリクス情報などを公開するWeb Serverを起動 ▶ コンテナへのPortForward/ContainerLog/Execなどのエンドポイントもある ▶ dockershimを使う場合はdockershimサーバーの起動も Kubeletの機能の(あくまで)概要としてはこのくらい 特にここらへんの実装が超巨⼤
  13. Kubeletの中では数多くのコンポーネント動いており、数⼗〜数百以上の goroutineが同時に動き、チャネルを通じてイベントを処理する

  14. ▶ 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もいくつか存在する
  15. Kubeletの全体像

  16. None
  17. None