よくある質問・用語集

  • もっと調べる
  • どうやって使う?

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

【カテゴリ】:システム管理  仮想化  オープンソースソフトウェア  

  • もっと調べる
  • どうやって使う?

【共催セミナー】研修管理・運用の負担を軽減 学習管理システム(LMS)紹介セミナー

日程: 5月23日(木)Webセミナー「BigBlueButton」を使用します。
内容: 社内研修の課題を解決できる学習管理システム(LMS)について紹介します。
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

ReplicaSetに関連するページ(事例など)