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

Controllerを作ってみよう
~ Kubernetes Controllerハンズオン ~

bells17
January 30, 2024

Controllerを作ってみよう
~ Kubernetes Controllerハンズオン ~

bells17

January 30, 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 ▶ #kubenews ▶ X(Twitter): @bells 1 7 _ ▶ GitHub: @bells 1 7
  2. 今⽇のハンズオンについて ▶ KubernetesのSDK ”client-go” を使⽤して簡単なKubernetes Controllerを⾃作します ▶ kubebuilderなどを使⽤せず、client-goを直接使⽤することでコントローラーについての イメージを掴むことを主な⽬的としてハンズオンをやっていきたいと思います 


    (コントローラーを書くだけならkubebuilderを使った⽅が楽だけど⾊々とラップされてる のでコントローラーの動作イメージを掴むことを主⽬的にする場合 client-go を直接使った ⽅が良いかなということで今回は client-go を使⽤するパターンを採⽤してます) ▶ kindを使⽤して構築したKubernetesクラスター上に⾃作したコントローラーをデプロイ 
 して動作を確認できるようにしましょう ▶ client-go はGo⾔語で実装されているため、Go⾔語の実⾏環境も必要です
  3. 作成するコントローラー ▶ Deploymentに`sample-controller: “True”`アノテーションを設定するだけのシンプルな コントローラーです ▶ Kubernetesのコントローラー実装を読むために必要な内容を最低限掴むことが⽬的なので ハンズオンではシンプルなコントローラーを実装してみましょう ▶ 参考実装はこちら:

    https://github.com/bells 1 7 /k 8 s-controller-example + ↑のリポジトリを使⽤する場合vscode+devcontainerがセットアップされていればすぐ に動かして試すことができます + こちらを参考にしてもOKです https://github.com/kubernetes/sample-controller
  4. 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のアーキテクチャ全体像から
  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 kube-api-server以外のConponentは Controllerを中⼼として機能を実現している
  6. client-goの主要ライブラリ ▶ Re fl ector: 指定リソースをList & Watchでデータ取得&取得後の変更監視 
 ~

    Delta FIFO Queue にデータを渡す ▶ Informer: Delta FIFO Queue から取り出したデータを Indexer にキャッシュ 
 & 登録されたイベントハンドラーを呼び出し ▶ Indexer: キャッシュされたデータの管理(ローカルキャッシュ) ▶ Workqueue: イベントハンドラーからデータをキューイングするためのキュー 
 コントローラーの調整ループを管理するために使⽤