0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マネージド K8s ユーザーのためのコントロールプレーン入門

Last updated at Posted at 2024-10-30

はじめに

私はマネージド K8s (Azure AKS, Amazon EKS など)を何度か利用したことがあります。
kubectl コマンドの利用時に裏で何らか API が実行されていることは認識していましたが、その先で何が行われているかまで理解していませんでした。

Kubernetes をしっかりと理解するには、マネージド K8s であまり意識していないコントロールプレーンを理解する必要があると感じ、調べてみました。

コントロールプレーンって何だっけ

下記に記載があります。

コントロールプレーンコンポーネントは、クラスターに関する全体的な決定(スケジューリングなど)を行います。また、クラスターイベントの検出および応答を行います(たとえば、deployment の replicas フィールドが満たされていない場合に、新しい Pod を起動する等)。

クラスタを維持する上で重要な、クラスターの状態を管理・制御するコンポーネント群、ですね。
情報を整理して監視し、指示を出す、高性能な脳ミソ、というイメージをしました。
指示を出すまでで、実際に作業をするのはワーカーノード上のコンポーネントになります。

以降で、重要なコンポーネントをいくつか紹介できればと思います。

kube-apiserver:全ての入り口

下記に記載があります。

API サーバーは、Kubernetes API を外部に提供する Kubernetes コントロールプレーンのコンポーネントです。 API サーバーは Kubernetes コントロールプレーンのフロントエンドになります。
Kubernetes API サーバーの主な実装は kube-apiserver です。

コントールプレーンには Kubernetes API を外部に提供するコンポーネントが必要であり、その実装として kube-apiserver がある、ということですね ?
kubectl コマンドの通信先も kube-apiserver となります。
kubectl apply -f manifest.yaml のようなコマンドが何をしているか、でいうと、後述の etcd に直接マニフェストファイルを追加するのではなく、この kube-apiserver を経由してマニフェストファイルの定義を適用しています。

etcd:データを守る番人

下記に記載があります。

一貫性、高可用性を持ったキーバリューストアで、Kubernetes の全てのクラスター情報の保存場所として利用されています。

RDB ではなくキーバリューストアですね。
シンプルな記載ですが、「一貫性」「高可用性」「Kubernetes の全てのクラスター情報の保存場所」という思い言葉が並び、非常に重要で「落とせない」ことが伝わってきます。

kube-scheduler:Pod の新居を決める

下記に記載があります。

コントロールプレーン上で動作するコンポーネントで、新しく作られた Pod にノードが割り当てられているか監視し、割り当てられていなかった場合にその Pod を実行するノードを選択します。

Pod が動作する場所を手配してくれる存在です。
Pod リソースが「作成された」だけでは Pod の実体はなくて、「ノードが割り当て」られてそこで実体を作られて初めて動く、ということをイメージしました。

スケジューリングの決定は、Pod あるいは Pod 群のリソース要求量、ハードウェア/ソフトウェア/ポリシーによる制約、アフィニティおよびアンチアフィニティの指定、データの局所性、ワークロード間の干渉、有効期限などを考慮して行われます。

様々な条件をもとに、どのノードに割り当てるかを決定するようです。

まとめ

概要レベルですが、コントロールプレーンについて整理してみました。
コントロールプレーンは実務を負わないことが分かり、ワーカーノード上に K8s のコンポーネントが必要なことを認識できました。
マネージド K8s では見えにくい部分でしたが、理解することで以下のような気づきが得られました:

  • クラスター操作のリクエストは必ず kube-apiserver を経由する
  • クラスターの状態は etcd に保存されている
  • Pod の配置は様々な条件を考慮して kube-scheduler が決定する

次回はワーカーノードについて調べてみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?