僕は技術ができない

技術のできないスーツ園児ニアが考えていること

Kubernetes の API Resource をふわっと理解する

Kubernetes上で扱われる情報(Pod, Service等)は api-server 上では API Resource として定義されています。
それに対して、実際にKubernetes上で動作しているリソース(というかプロセスと言ったほうがいいかもしれない)のことをオブジェクトと言います、たぶん。

API Resource には大きく5種類があります。
Kubernetes API Reference v1.15

リソースカテゴリ 概要
Workloads クラスタでコンテナを管理、実行するために使用するオブジェクト
Discovery & LB Podを外部からアクセス可能なロードバランサーにつなぐために使用するオブジェクト
Config & Storage アプリケーションに設定値を埋め込む、データをコンテナの外部で永続化するために利用するオブジェクト
Cluster クラスタ自体の構成方法を定義するオブジェクト
Metadata クラスタ内の他のリソースのふるまいを構成するオブジェクト

上記の定義でいまいちわからないのが Cluster と Metadata。

例を考えてみるとイメージはつくかな。

Cluster Resources のふわっとしたイメージ

Cluster Resources は Node, Namespace, ServiceAccountといったクラスタ自体の管理に必要なリソースのこと。

  • Node は コンテナをホストしてる物理的なマシンのこと(VMでもいいけど)。
  • Namespace は Kubernetes クラスタ内を論理的に分ける単位。Linux の Namespace とは別だよ。
  • ServiceAccount は クラスタ内のなんらかのプロセスが api-server にリクエスト投げるときに使うアカウント。api-server には認証認可の仕組みがあるのでリクエスト投げるならアカウントが必要になる。

Metadata Resources のふわっとしたイメージ

Metadata Resources は LimitRange, HorizontalPodAutoscaler といった、オブジェクトの制限やスケール、管理に関するリソースのこと。

  • LimitRange は性能の上限と下限を設定するリソース
  • HorizontalPodAutoscaler は Pod のレプリカ数をCPU負荷によってスケールさせるリソース

リソース(オブジェクト)の全体感はこんな感じで。