SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート(AD)

アーキテクチャから読み解くKubernetes~Controllerの仕組み~

【15-A-6】アーキテクチャから学ぶKubernetesの全体像

  • このエントリーをはてなブックマークに追加

 クラウドで使うコンテナというと、AWSのAmazon ECS、Google Cloud Runなどがある。今回はコンテナオーケストレーションのKubernetesのアーキテクチャについて、スリーシェイク bells17氏が解説する。KubernetesはもともとGoogleが内部で運用していたコンテナ基盤のBorgをベースとしており、Cloud Native Computing Foundation(CNCF)に寄贈されたものだ。認知度からも分かるように、成熟度レベルは「GRADUATED」で成熟が進んだものとなっている。

  • このエントリーをはてなブックマークに追加

KubernetesのコアとなるControllerとは?

 コンテナオーケストレーションツールとして有名なKubernetes。代表的な特徴を挙げるとサービスディスカバリとロードバランシングがある。Serviceリソースを定義することで、多数起動されているコンテナに接続する経路を自動で調整してくれるものだ。他にもコンテナでボリュームを使う時のストレージオーケストレーションもある。

 他にも自動化されたロールアウトやロールバック、自動ビンパッキング、セルフヒーリングなど挙げるときりがないものの、bells17氏は「個人的にはKubernetes Controllerがすべてを支えていると言っても過言ではないと思う」と言う。そこで今回はKubernetesの基盤となるControllerにフォーカスを当てて解説する。

bells17
株式会社スリーシェイク bells17氏

 まずはざっとKubernetesの全体像から見ていこう。図の左がKubernetesのコントロールプレーン、右下がノードでクラスタに参加しているサーバーだ。

Kubernetesの全体像
Kubernetesの全体像

 コントロールプレーンには「etcd」というキーバリューストア(データベース)があり、Kubernetesはこれをデータストアとして使用している。これと直接やりとりするのはkube-api-serverというサーバーだけで、他のコンポーネントはすべてこのサーバーを経由して処理する仕組みになっている。

 コントロールプレーン側でkube-api-serverとやりとりする代表的なコンポーネントにはkube-controller-managerとcloud-controller-managerの2種類のマネージャーと、kube-schedulerの他、KubernetesのWorker Node上で動作するkube-proxyとkubeletがある。cloud-controller-managerから伸びているクラウドは(AWSなどのパブリッククラウドよりは)Kubernetes実行基盤とイメージするといいだろう。kube-schedulerは新たにコンテナを実行する時に適切なノードを選択するものとなる。

 Controllerはざっくり言うと、監視対象リソースの変更や一定時間経過などのイベントをトリガーとして調整ループ(Reconciliation Loop)を実行する。調整ループとは「公式ドキュメントには登場しないもののよく使われる。YAMLなどで宣言されたあるべき状態と現在の状態と比較して、変更や調整を行う制御ループ」とbells17氏は説明する。

 Kubernetesにおけるkube-api-server以外のコンポーネントは、Controllerやそれに似たイベント駆動の仕組みがいろんなところで採用されている。そのためKubernetesでよく言われる「“宣言的API”はControllerの組み合わせで成り立っていると言っても過言ではない」とbells17氏は言う。

 なおControllerはKubernetes開発者だけが作るものではなく、ユーザーが自作しデプロイすることでKubernetesの機能を拡張することもできる。KubernetesのCustom Resource(CR)というユーザー独自にデータを定義できる仕組みと、独自のControllerを組み合わせれば独自の仕組みを開発することもできる。これは「Kubernetes Operator」とも呼ばれている。

 例えば、CRを利用してロードバランサーで使用する証明書の発行や管理を行う「cert-manager」、Kubernetesの名前空間を階層化できる「Hierarchical Namespace Controller」、GitOptsによるデプロイを実現する「Argo CD」などがある。bells17氏は「こうしたことを自作するフレームワークもあるので、Kubernetesを基盤にして独自プラットフォームの機能をいろいろ作りあげている会社さんも見かけます」と話す。

次のページ
Kubernetes Controllerの仕組み

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2024 セッションレポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:株式会社スリーシェイク

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19131 2024/04/22 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング