Kubernetesで使われる用語



| 用語 | 説明 |
|:-:|:-------|
| Annotations  | Kubernetesではmedataのidentifyのためにラベルが使用されるが、任意のIdentifyしてないmetadataに対しても利用することができる。ラベルのようにKey/Valueで使用する。ビルド/リリース/イメージの情報やログ、モニタリングのポインタなどに利用されることを想定。  |
| Daemon Sets  |Daemon Setは全てのノードがあるpodのコピーを実行することを保証する。ノードをクラスタに追加すると、Podがそれらに追加され、ノードがクラスタから取り除かれると、それらのPodはガベージコレクトされる。|
| Deployments  | PodやReplication Setsの宣言型アップデート機能を提供。Deploymentオブジェクト内で希望する状態を記載すればDeployment Controllerが要求した状態に変更してくれる。Deploymentsは新しいリソースを作成するときに定義する。次のような用途で使う。 |
| Horizontal Pod Autoscaling  | Horizontal Pod Autoscalingをしながら、kubernetesは自動的にreplication controller,deployment,replica set内のPod数をスケールさせる。Horizontal Pod AutoscalerはKubernetes APIリソース、コントローラとして実装されている。コントローラは定期的にレプリカ数を調整する。 |
| Images  | Pod中の各コンテナは自身のイメージを持っており、イメージのタイプとしてはDockerイメージのみ対応している。Dockerイメージを作成し、レジストリへプッシュすればKubernetesのpodから参照できる。|
| Ingress Resources  | Ingressはclusterサービスへのインバウンドコネクションを許可するルールの集まり。 |
| Jobs  | ジョブは一つ以上のPodの作成、指定した数のPodの削除が行われることを保障する。Podが無事に完成すると、ジョブは完成したジョブをトラックする。|
| Labels と Selectors  |ラベルはキーバリューペアでPodなどのオブジェクトに割り当てる。 ラベルはオブジェクトの属性をユーザにとって分かりやすく意味のあるものにすることを目的としており、コアシステムの意味をダイレクトに暗示するようなラベルをつけるきではない。ラベルは整理したり、オブジェクトのサブセットを選択するのに使用される。ラベルはオブジェクト生成時、生成後に割り当てたり変更したりすることができる。ラベルを使ってPodをまとめることも可能。ラベルの例としては"release":"stable"、"environment":"dev"、"tier":"frontend"、"track":"daily"などがある。 |
| Names  | Kubernetes REST APIのオブジェクトはNameとUIDでアイデンティファイされる。Nameは/api/v1/pods/some-nameのようにResource URL内でオブジェクトを参照する際に使用される。UIDはKubernetesによって生成され、どのオブジェクトにも割り当てられている。|
| Namespaces  |Kubernetesは複数の仮想クラスタをサポートしており、仮想クラスタはnamespaceと呼ばれる。 |
| Network Policies  |　ネットワークポリシーは、ポッドの選択が互いにおよび他のネットワークエンドポイントと通信することが許可されているかの仕様です。 A network policy is a specification of how selections of pods are allowed to communicate with each other and other network endpoints.　NetworkPolicyリソースはPodを選択するためにラベルを使用し、そのPodに対するトラフィックのホワイトリストルールを定義する。 |
| Nodes  | NodeはKubernetesのworkerマシーンで、以前はMinionと呼ばれていた。各ノードはPodを実行するのに必要なサービスを備えており、Masterコンポーネントから管理される。Node上のサービスはdocker,kubelet,network proxyを含んでいる。 |
| Persistent Volumes  | PersistentVolume(PV)はクラスタにおけるネットワークストレージの一部で、nodeのようなクラスタのリソースである。 PVsはVolumesのようなボリュームプラグインだが、PVを利用している他のPodとは異なる独立したライフサイクルがある。PersistentVolumeClaim(PVC)はストレージに対するリクエストで、Podに似ている。Podはノードのリソースを消費し、PVCはPVリソースを消費する。Claimは特定のサイズやアクセスモード(read/write,read-onlyなど）をリクエストすることができる。|
| Pet Sets  |Kubernetesでは、ほとんどのPodはステートレスなユニットとして、使い捨てされる概念で使用されルノに対し、Pet SetはステートフルなPodの集まりで、podはより強い概念を求める。※後で詳細に調べる。|
| Pods  | Podは1つ以上のコンテナ、コンテナ用の共有ストレージ、コンテナ実行のオプションの集まり。同じPodのContainerは常に同じ場所になるようスケジューリングされ、共有のコンテキスト上で実行される。同じノードに配置されるので、同じノードに配置して動作させたいコンテナは同じPodに含めるようにする。 |
| Replica Sets  | 次世代のReplication Controller。今のところReplica SetsとReplication Controllerの違いはselectorのサポートがあるかどうかだけ。Replica Setは新しいset-based selectorをサポートしている。Replication Controllerはequality-based selectorのみサポートしている。 ほとんどのkubectlコマンドはrolling-updateの機能を除いてReplication Controllerの機能をReplica Setsは利用可能である。Rolling Updateを使用したい場合はDeploymentを使うべきである。roll outコマンドを使用したDeploymentのRolling Updateがおすすめ。今ではPodの作成、削除、更新のオーケストレーションにはDeploymentを使うことが主流。|
| Replication Controller  | Podのレプリカ数（Pod内のコンテナ数）を維持する/保証する機能。コンテナが指定したレプリカ数よりも少ない場合は新たにコンテナを起動し、増えすぎてる場合はコンテナを削除しレプリカ数を維持する。 |
| Resource Quotas  | Resource Quotaはリソース消費のリミットに対する制約を与える。※詳細は別途 |
| Secrets  | Secretはセンシティブ情報（パスワード、OAuth token,ssh鍵）を保持するためのもので、この情報をsecretに入れることでPodの定義やdocker imageに置くよりも安全かつフレキシブルになる。※詳細は別途 |
| Security Context|Security ContextはOSのセキュリティ設定をコンテナへ適用することを定義する。２つのSecurity Contextレベルがあり、１つはPodレベル、もう一つはコンテナレベルである。※詳細は別途 |
| Services  | PodはReplication Controllerによりダイナミックに生成と削除が行われる（Podは使い捨てされるようなイメージ）。そのため、PodはIPアドレスを持ってるが、Podが生まれ変わるとIPアドレスも変わってしまう(GCEもEIPを付けないとインスタンスの再起動でIPアドレスが変わるので同じ感じ）。Serviceは、論理的なPodの集まりとそのPodにアクセスするためのポリシーを定義したアブストラクトで、これらはmicro-serviceとも呼ばれる。ServiceのターゲットとなるPodの集まりはLabel Selectorによって定義される。|
| Service Accounts  | Pod内で実行されるプロセスのアイデンティティを提供。Kubernetesではユーザアカウントは人間用、サービスアカウントはPod内で実行されるプロセス用。※GCPのサービスアカウント違いがあるか別途を調べる。 |
| Volumes  | コンテナ内のファイルはエフェメラルなのでトリビアルでないアプリをコンテナで実行する場合、問題になるケースがある。（１つ目に、コンテナがクラッシュするとkubeletがコンテナをリスタートするが、ファイルはロストする。コンテナはクリーンな状態でスタートする。２つ目に、コンテナ間でファイルを共有するケース。） Voloumeの抽象化がこの問題を解決できる。※詳細は別途 |