1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kubernetes基礎(9):Replication / ReplicaSet Controller

1
Last updated at Posted at 2020-07-07

Controller Overview

スクリーンショット 2020-07-03 16.37.40.png


Auto Healing
Nodeの上にPodがあり、Podが突然ダウンしたり、PodがスケジューリングされているNodeがダウンした場合はPodで動いていたサービスに障害が発生する。
Controllerはこのような状況を検出し、Podを他のNodeに新たに作ってくれる。

Auto Scaling
Podのリソースが限界状態になった時、Controllerはこの状態を把握してPodをもう1つ作ってくれて、負荷を分散させてPodがダウンしないようにしてサービスの性能に障害なく、安定したサービスを運用できるようにしてくれる。

Software Update
複数のPodのバージョンアップするとき、Controllerを介して一度に簡単にできる。
アップグレードするときに問題が発生した場合、ロールバックをすることができる機能も提供する。

Job
一時的な作業をする場合はControllerが必要な時間のみPodを作って、そのタスクを実行して、タスク終了後は削除をする。
必要な時間だけリソースが使用されて、作業が終わった後はリソースが返されるため、効率的なリソース活用が可能となる。

KubernetesのControllerはサービスを管理し、効率よく運用できるように色んな機能を提供しています。

Replication Controller, ReplicaSet

スクリーンショット 2020-07-03 16.38.15.png
Replication ControllerはDeplicatedになって、現在はReplicaSetを提供している。
上の図のように、Replication、ReplicaSetの機能としてTemplate、Replicas、Selectorがある。
共通機能ではTemplate、Replicasがあり、SelectorはReplicaSetのみの機能である。
まだReplicationを多く使っているが、ReplicationからReplicaSetに変更も可能である。

1. Template

スクリーンショット 2020-07-03 17.01.46.png
ControllerとPodは、ServiceとPodのようにLabelとセSelectorを使って接続する。
Controllerを作成するときにTemplateとしてPodの内容を設定しておくと、Podがダウンした時、ControllerがTemplateを基に再生成してくれる。
こういう特徴を利用してPodのアップグレードを簡単にできる。
Templateを更新し、既存の接続されているPodをダウンロードさせるとControllerはアップグレードされたTemplateでPodを再作成するからだ。

【yaml】
TemplateにPodを定義するとき、Controllerと接続するためにLabelを定義して置かないとPodとの接続ができない。

2. Replicas

スクリーンショット 2020-07-03 17.02.09.png
replicasに設定されている数だけPodが管理され、Podが削除されると、1つのPodを作成してくれる。
数値が増加すると、増加されただけPodがScale Outされる。

TemplateとReplicasの機能を使って、PodとControllerを別々に作成せずに一度に複数のPodを作成することができる。
TemplateにPodを定義して置いて、Replicasに数を指定し、Podは作成せずにControllerのみ作成するとControllerが指定されている数だけTemplateの内容を基にPodを作ってくれる。
実際にコントローラを使用する場合、コントローラのみ設定して使います。

3. Selector

スクリーンショット 2020-07-03 17.02.33.png
Replication ControllerのSelectorは、keyとvalueが同じPodを接続してくれる。
keyとvalueが1つでも異なると接続できない。
ReplicaSetのSelectorには二つ追加された属性があり、MatchLabelsと呼ぶkeyとvalueの両方が一致する時、接続してくれるReplication Controllerと同じ機能がある。
もう1つは、MatchExpressionと呼ばれる機能があり、keyとvalueを細かくコントロールできる。
たとえばkey:ver、operator:Existsに設定すると、値が違いますがLabelのキーがverであるすべてのPodを選択することになる。
スクリーンショット 2020-07-03 17.03.12.png
yamlファイルを見るとSelectorにmatchLabelsとmatchExpressionsがあってmatchLabelsはkeyのvalueを設定している。
スクリーンショット 2020-07-03 17.02.55.png
「matchExpressions」は下記のようにもっと詳細な設定ができる。
operatorには、いくつかのオプションがあります。
Exists
keyと一致するPodを接続してくれる。
DoseNotExist
keyと一致しないPodを接続してくれる。
In
keyに1つ以上のvalueを設定することができ、keyとvalueに対応するPodを接続してくれる。
NotIn
keyに1つ以上のvalueを設定することができるがkeyに一致してvalueとは一致しないPodを接続してくれる。
ReplicaSetは、さまざまなPodを接続してくれるオプションを提供している。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?