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

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

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

bells17

February 15, 2024
Tweet

More Decks by bells17

Other Decks in Programming

Transcript

  1. ▶ @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
  2. よく名前を⽿にする コンテナオーケストレーションツール ▶ AWS Lambda ▶ Amazon ECS ▶ Cloud

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

    Run(Google Cloud) ▶ App Engine(Google Cloud) ▶ Heroku ▶ Nomad(Hashicorp) ▶ Kubernetes ← 今回はこれについてお話します
  4. Kubernetesの特徴 ▶ サービスディスカバリとロードバランシング ▶ ストレージオーケストレーション ▶ ⾃動化されたロールアウトとロールバック ▶ ⾃動ビンパッキング ▶

    セルフヒーリング ▶ 秘密情報と設定の管理 ▶ バッチ実⾏ ▶ ⽔平スケーリング ▶ IPv 4 /IPv 6 デュアルスタック ▶ 拡張性を考慮した設計 https://kubernetes.io/docs/concepts/overview/ より
  5. 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の全体像
  6. Kubernetes Controller ▶ Kubernetes Controller: 監視対象リソース変更や⼀定時間経過などのイベントを 
 トリガーとして、調整ループを実⾏するアプリケーション ▶ 調整ループ:

    宣⾔されたあるべき状態と現在の状態との⽐較を⾏い、現在の状態を 
 あるべき状態に変更する制御ループ ※ 調整ループという表現はKubernetesの公式ドキュメント内には
 登場しないが、よく使われるのでここでは上記のように説明してる
  7. 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を中⼼として多くの機能を実現している
  8. 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)
  9. 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を使⽤しているのか⾒てみましょう
  10. 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 のデュアルスタックのサポートも有り
  11. 今⽇のセッションの個別部分に関する詳しい内容は 
 このあたりの書籍‧資料をご確認ください! ▶ 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
  12. 参考資料 ▶ 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