Movatterモバイル変換


[0]ホーム

URL:


$30 off During Our Annual Pro Sale. View Details »
Speaker DeckSpeaker Deck
Speaker Deck

アーキテクチャから学ぶKubernetesの全体像

Avatar for bells17 bells17
February 15, 2024

 アーキテクチャから学ぶKubernetesの全体像

Developers Summit(デブサミ)2024で登壇したセッションの資料です。

-https://event.shoeisha.jp/devsumi/20240215
-https://event.shoeisha.jp/devsumi/20240215/session/4777

セッション解説記事:
https://codezine.jp/article/detail/19131

Avatar for bells17

bells17

February 15, 2024
Tweet

More Decks by bells17

See All by bells17

Other Decks in Programming

See All in Programming

Featured

See All Featured

Transcript

  1. アーキテクチャから学ぶ 
 Kubernetesの全体像 Developers Summit 2 0 2 4 (

    2 0 2 4 / 2 / 1 5 ) @bells 1 7
  2. ▶ @bells 1 7 ▶ Software Engineer@ 3 -shake inc.

    ▶ kubernetes & kubernetes-csi member ▶ Kubernetes Internal Organizer ▶ Kubernetes Novice Tokyo Organizer ← New! ▶ #kubenews ▶ X(Twitter): @bells 1 7 _ ▶ GitHub: @bells 1 7
  3. 突然ですが みなさん本番環境でコンテナ使ってますか?

  4. よく名前を⽿にする コンテナオーケストレーションツール ▶ AWS Lambda ▶ Amazon ECS ▶ Cloud

    Run(Google Cloud) ▶ App Engine(Google Cloud) ▶ Heroku ▶ Nomad(Hashicorp) ▶ Kubernetes
  5. よく名前を⽿にする コンテナオーケストレーションツール ▶ AWS Lambda ▶ Amazon ECS ▶ Cloud

    Run(Google Cloud) ▶ App Engine(Google Cloud) ▶ Heroku ▶ Nomad(Hashicorp) ▶ Kubernetes ← 今回はこれについてお話します
  6. Kubernetes とは? ▶ コンテナオーケストレーションツールの1つ ▶ Googleが内部で運⽤していたコンテナ基盤であるBorgをベースとしてる ▶ Cloud Native Computing

    Foundation(CNCF)に寄贈済み 
 (成熟度レベル: GRADUATED)
  7. CNCFプロジェクトの成熟度レベル

  8. Kubernetesの特徴 ▶ サービスディスカバリとロードバランシング ▶ ストレージオーケストレーション ▶ ⾃動化されたロールアウトとロールバック ▶ ⾃動ビンパッキング ▶

    セルフヒーリング ▶ 秘密情報と設定の管理 ▶ バッチ実⾏ ▶ ⽔平スケーリング ▶ IPv 4 /IPv 6 デュアルスタック ▶ 拡張性を考慮した設計 https://kubernetes.io/docs/concepts/overview/ より
  9. Kubernetes Controllerという仕組みが これら全てを⽀えている と言っても過言じゃない

  10. ということで今⽇のお話 ▶ Kubernetesの基盤となる”Controller”について ▶ Kubernetesはどのように”Controller”を使⽤しているのか?

  11. ということでControllerのお話

  12. https://github.com/kubernetes/website/blob/fb 6 3 6 4 da 0 afd 1 9

    e 8 a 9 5 1 5 aaae 2 de 9 bc 7 4 a 0 a 6 abd/static/images/docs/components-of-kubernetes.png Kubernetesの全体像
  13. None
  14. Kubernetes Controller ▶ Kubernetes Controller: 監視対象リソース変更や⼀定時間経過などのイベントを 
 トリガーとして、調整ループを実⾏するアプリケーション ▶ 調整ループ:

    宣⾔されたあるべき状態と現在の状態との⽐較を⾏い、現在の状態を 
 あるべき状態に変更する制御ループ ※ 調整ループという表現はKubernetesの公式ドキュメント内には
 登場しないが、よく使われるのでここでは上記のように説明してる
  15. https://github.com/kubernetes/sample-controller/blob/master/docs/images/client-go-controller-interaction.jpeg

  16. https://github.com/kubernetes/website/blob/fb 6 3 6 4 da 0 afd 1 9

    e 8 a 9 5 1 5 aaae 2 de 9 bc 7 4 a 0 a 6 abd/static/images/docs/components-of-kubernetes.png kube-api-server以外のConponentはControllerを中⼼として多くの機能を実現している
  17. Kubernetesの宣⾔的APIという仕組みは 
 Controllerによって成り⽴っている

  18. Controllerの⾃作によってKubernetesそのものを拡張可能 ▶ Controllerはユーザーが⾃分で開発~デプロイすることでKubernetesそのものの 
 機能を拡張することが可能 ▶ Custom Resource(CR)を利⽤することで独⾃のリソースをKubernetes内に作成できる ▶ 上記を組み合わせたものを”Kubernetes

    Operator”と呼んだりする ▶ e.g. + cert-manager: CRを利⽤してロードバランサーなどで使⽤する証明書の発⾏‧管理など を⾏える + HNC: Kubernetesの名前空間(Namespace)を階層化して使⽤できる + Argo CD: GitOptsによるデプロイを実現 + etc … ▶ Controllerを⾃作するためのフレームワークも有り(controller-runtime/kubebuilder)
  19. Kubernetesのコアとなる 
 Kubernetes Controllerの仕組みを解説しました

  20. https://github.com/kubernetes/website/blob/fb 6 3 6 4 da 0 afd 1 9

    e 8 a 9 5 1 5 aaae 2 de 9 bc 7 4 a 0 a 6 abd/static/images/docs/components-of-kubernetes.png 次はKubrernetesがどのようにControllerを使⽤しているのか⾒てみましょう
  21. (kube|cloud)-controller-manager

  22. kube-controller-manager ▶ (主に)cloud-controller-managerが実⾏する以外の各種Controllerを 
 まとめて実⾏~管理するやつ ▶ 実際にはその他のComponentでもいくつもControllerを持ってはいる ▶ 設定によって起動するController数は前後するが、 


    ⼤体30-40種類のControllerを実⾏ ▶ 環境によってはcloud-controller-managerのControllerを実⾏を⾏う
  23. cloud-controller-manager ▶ 実⾏基盤(クラウド)と連携して動作するコントローラーを動かす ▶ Cloud Providerという実⾏基盤との連携⽤コンポーネントを組み込む 
 ことで連携を⾏う

  24. Pod関連Controller

  25. Endponts & EndpointSlice関連Controller Overview

  26. kube-proxyによるiptables設定

  27. kube-proxy とは? ▶ Worker Nodeで動作するCore Componentの1つ ▶ 主にServiceリソースとEndpointSliceリソースを元にネットワーク設定を 
 ⾏い、Serviceのエンドポイント(e.g.

    foo.bar.svc.cluster.local)にアクセス 
 した際にPodにリクエストが届くようにしてくれるコンポーネント ▶ 動作モードには下記の3つがある(userspaceというモードもあったが削除された) ▶ iptables(デフォルト) ▶ ipvs ▶ kernelspace(Windows⽤) ▶ IPv 4 とIPv 6 のデュアルスタックのサポートも有り
  28. iptablesが設定するNAT設定によるパケット処理フローの例

  29. Service/EndpointSliceリソースを元にControllerによってiptablesの設定を⾏う

  30. kubeletがコンテナを起動するまでの流れ

  31. Kubelet ▶ Kubernetesクラスターの各ノードで動作するコンポーネント ▶ コンテナランタイムと連携しWorker Nodeで動かすコンテナとその関連 
 リソースを管理する

  32. コンテナ起動を⾏うKubeletのメインループはControllerライクな 
 イベント駆動型になっている

  33. CSI DriverʹΑΔKubernetesͷϘϦϡʔϜར༻

  34. αΠυΧʔΞϓϦέʔγϣϯʹΑΔ࿈ܞ https://github.com/kubernetes/community/blob/d83cd53979d08ac0e0e33704c6aec6b1c3cb7c8d/contributors/design-proposals/storage/container-storage-interface_diagram1.png

  35. ϘϦϡʔϜ࡞੒࣌ͷॲཧϑϩʔ

  36. Pod࡞੒࣌ͷϘϦϡʔϜϚ΢ϯτ·Ͱͷϑϩʔ

  37. まとめ

  38. Kubernetesは 
 Controllerの組み合わせでできている Controllerと
 それに類する
 アプリケーション

  39. 今⽇のセッションの個別部分に関する詳しい内容は 
 このあたりの書籍‧資料をご確認ください! ▶ kube-proxy⼊⾨ ▶ kube-controller-manager⼊⾨ ▶ Kube API

    Server ▶ KubernetesとCoreDNSについて理解する ▶ CSI⼊⾨ ▶ Cloud Controller Manager Deep Dive ▶ kubeadmに学 ぶ クラスター構築 ▶ Kubeletから読み解くKubernetesの 
 コンテナ管理の裏側 ▶ CRIの仕様とdockershimの実装について 
 調 べ てみた ▶ controller-runtime Deep Dive
  40. 最後に宣伝

  41. スリーシェイクではエンジニアを募集してます

  42. Sreake SREの⽀援概要 SREの考え⽅に従って、AWSやGoogle Cloudを利⽤しているサービスの 技術戦略、設計、構築、運⽤までワンストップで対応 伴⾛型の⽀援で最終的にクライアントの内製化‧⾃⾛がゴール

  43. 参考資料 ▶ https://github.com/kubernetes/kubernetes/tree/v 1 . 2 8 . 4 ▶

    https://kubernetes-csi.github.io/docs/ ▶ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/ storage/container-storage-interface.md
  44. 画像引⽤元 ▶ https://github.com/kubernetes/community/tree/master/icons ▶ https://github.com/kubernetes/kubernetes/tree/master/logo ▶ https://github.com/cncf/artwork/tree/master/projects/kubernetes ▶ https://github.com/kubernetes/kubeadm/tree/main/logos

  45. Thanks / Question? ▶ @bells 1 7 ▶ Slide: https://speakerdeck.com/bells

    1 7 ▶ @bells 1 7 _

[8]ページ先頭

©2009-2025 Movatter.jp