こいつら何?
StorageClass, ingressClass
CKAの勉強やハンズオンやってると、各種classはとりあえず指定した値を書いといてみたいな扱いになりがち(多分)なんですが、classって名前なんだから重要なんだろうと思って調べました。
一般的なclassとは。
classとはプログラミングにおいては普遍的なパラダイムで、特定の目的に即したデータの構造とそれらを利用する振る舞い(関数、メソッド)を持つオブジェクトの設計書です。
以下wikipediaのクラス(コンピュータ)の前文記載します。
Wikipedia: クラス (コンピュータ)より
オブジェクト指向プログラミングにおけるクラス(英: class)[1]は、オブジェクトを生成するための設計図あるいはひな形に相当するものである。抽象データ型の一つ。クラスから生成したオブジェクトの実体のことをインスタンスという。
クラスには、クラス自身またはクラスのインスタンスが保持するデータと、データに関連したオブジェクトの振る舞いを記述できる。プログラミング言語によっては、それぞれにアクセス修飾子(英語版)を指定できる。統一モデリング言語 (UML) のクラス図では、データのことを「属性」、振る舞いのことを「操作」と呼ぶ。Javaなどでは、データのことを「フィールド」、振る舞いのことを「メソッド」と呼ぶ。C++などでは、データのことを「メンバー変数」、振る舞いのことを「メンバー関数」と呼ぶ。
Kubernetesにおけるclass
Kubernetesにおけるclassはデータ構造体のみの役割となり、振る舞いはSchedulerやcontrollerなどがそれを読み取って実行する。
KubernetesAPIにおけるclass
KubernetesAPIには以下記載
名前 | apiVersion | 役割 |
---|---|---|
PriorityClass | scheduling.k8s.io/v1 | プライオリティクラスはPodのスケジューリングする際の重みづけを整数で行うためのクラスです。PriorityClass.metadata.nameを使って、優先度を区分ごとにネーミングをして優先度を設定する可能です。重みはpod.spec.priorityにスケジュールの際に設定されます。 |
IngressClass | networking.k8s.io/v1 | IngressClassは特定のIngressControllerをIngressに紐づけるためのclassです。この名前を変えるだけで各ベンダのマネージドサービスのIngressControllerや独自のそれと切り替えることができます。 |
StorageClass | storage.k8s.io/v1 | StorageClassは、PersistentVolumesを動的にプロビジョニングできるストレージクラスのパラメータを記述します。StorageClassesは名前空間化されていない。etcdによるストレージクラスの名前はObjectMeta.Nameにあります。 |
RuntimeClass | node.k8s.io/v1 | OCIを設定するためのClass。runc以外にもmicroVMを使ったkataやgolangで書かれたシステムコールを行うgVisoryのようにpod以外に加えたリソースを消費するOCI向けにリソース割り当てを定義することができる。 |
結論
みんな大事、おしまい。