ReplicaSetとは
ReplicaSetは、KubernetesでPodを管理するためのオブジェクトです。
Kubernetesでは、Podを単独で起動することはほとんどありません。ほとんどの場合には、ReplicaSet、Job、StatefulSetなどの管理用オブジェクトを通してPodを利用します。
このうち、ReplicaSetは常駐型でステートレスなPodに対して使われる管理用オブジェクトです。ReplicaSetは、Kubernetesクラスタ内で、Podの数を一定に維持する役割を持っています。また、Podのセルフヒーリングの機能を提供します。
ReplicaSetの作成
KubernetesでReplicaSetを作成するには、YAML形式のマニフェストファイルを使います。次は、最も基本的なマニフェストの例です。
ReplicaSetのマニフェストの例(sample.yaml)
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: sample
spec:
replicas: 3
selector:
matchLabels:
app: sample-pod
template:
metadata:
labels:
app: sample-pod
spec:
containers:
- name: httpd-container
image: httpd:latest
このマニフェストの例では、ReplicaSetの中に、httpd-containerという1つのコンテナが動作するPodが定義されています。spec.templateには、作成するPodのテンプレートの仕様が規定されています。また、spec.replicasには作成するPodの数が設定されています。
spec.selectorには、Podの数を数えるための条件が記載されています。これは、spec.template.metadata.labelsに設定されているラベルと関連していて、このラベルに従ってPodの数をカウントします。
ReplicaSetの起動と確認
Kubernetesで、ReplicaSetを起動するには、用意したマニフェストを使って次のようにkubectl applyコマンドを実行します。
$ kubectl apply -f sample.yaml ⏎
ReplicaSetの状態は、kubectl get replicasetコマンドで確認することができます。
$ kubectl get replicaset ⏎ NAME DESIRED CURRENT READY AGE sample 3 3 3 94s
セルフヒーリング
複数のPodを起動する必要がない場合でも、ReplicaSetを使ってPodを生成することが推奨されています。その場合、spec.replicasに1を設定します。このようにReplicaSetを使ってPodを生成しておくと、何らかの原因でPodが停止してしまったとしても、Kubernetesが自動的に新しいPodを起動し、サービスが継続するようにしてくれます。これをセルフヒーリングと呼びます。
Pod数の変更
ReplicaSetのPod数は、後から変更することができます。その場合には、マニフェストファイルのspec.replicasの値を修正して、kubectl applyを行います。
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: sample
spec:
replicas: 2 ← 修正
selector:
matchLabels:
app: sample-pod
template:
metadata:
labels:
app: sample-pod
spec:
containers:
- name: httpd-container
image: httpd:latest
$ kubectl apply -f sample.yaml ⏎ replicaset.apps/sample configured
すると、自動的にPod数が調整されます。
$ kubectl get replicaset ⏎ NAME DESIRED CURRENT READY AGE sample 2 2 2 66s $ kubectl get pods ⏎ NAME READY STATUS RESTARTS AGE sample-jxvnq 1/1 Running 0 72s sample-xq7sm 1/1 Running 0 72s
【カテゴリ】:システム管理  仮想化  オープンソースソフトウェア  
【Webセミナー】OSSのプリザンターで業務アプリをつくる!ノーコード・ローコード徹底解説セミナー
| 日程: | 12月10日(水)Webセミナー「BigBlueButton」を使用します。 |
| 内容: | 今注目のノーコード・ローコード、OSSのプリザンターで実現しませんか? |
| ご興味のあるかたはぜひご参加ください。 | |
関連用語
- Kubernetesとは
- Dockerとは
- Podとは
- podmanとは
- Deploymentとは
- runcとは
- rktとは
- Kata Containerとは
- containerdとは
- gVisorとは
- CRI-Oとは
- Minikubeとは
- Microk8sとは
- Dockerfileとは



