Replicasetとは

kubernetes

全体図

ReplicasetはPod達をNodeをまたいで包み込んでいるオレンジ色の点線のイメージです。

Replicasetとは

ReplicaはPodを複製します。
Specで定義されたレプリカの数を自動配置、維持してくれます。
Podが死んでも自動修復してくれます。

Replicasetを試す

ここでは説明上はずせないのでReplicasetを作成しますが、本番運用ではまずをもってReplicasetを生で作ることはなく、その上位概念であるDeploymentを作成し管理します。Deploymentについては次の記事にまとめます。

replicaset.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
 name: helloworld
spec:
 replicas: 3
 selector:
   matchLabels:
     app: helloworld
 template:
   metadata:
     labels:
       app: helloworld
   spec:
     containers:
     - image: gcr.io/google-samples/hello-app:2.0
       name: helloworld

上記では、googleのリポからhello-appイメージを3つに冗長化したコンテナ化する指示を記述しています。

Yamlに納得したらApplyしてレプリカセットを作成します。

kubectl apply -f replicaset.yaml

操作デモ

こちらのGif動画では、hello-appをレプリカ数5個で作成し、故意にPodを一つ手動で削除した時、Podが自動復活する様を表現しています。

この挙動の意味するところは、kubernetesの思想はyaml絶対主義であり、yamlに記載された状態を維持しようとします。

それがたとえ管理者が故意にした操作であっても、「お前間違ったろ?」という認識でyamlの状態に戻します。

まとめ

Replicasetの挙動については、デモで伝えたとおり、宣言的指示を絶対重視します。

この挙動については、先に説明するDeploymentでも同じです。

また、冒頭の方でもお伝えしたように本番運用においてReplicasetを生で作成することはまずありえません。

その理由は、先に説明するDeploymentはReplicasetを包み込み世代管理をするリソースであるため、Deploymentで管理することで更新やロールバックが容易になるためです。

次回はそのDeploymentについて記事をまとめます。

タイトルとURLをコピーしました