よくある質問・用語集

サーバ構築のデージーネットTOP > OSS情報 > コンテナ型仮想化 > ReplicaSetとは

サーバ構築のデージーネットTOP > OSS情報 > よくある質問・用語集 > 用語集 > ReplicaSetとは

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

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セミナー】VPNだけじゃない! より安心・便利なリモートワーク環境改善
セミナー

日程: 8月27日(木)Webセミナー「BigBlueButton」を使用します。
内容: ご好評につき、6月に開催したセミナーを再度開催いたします! OSSを利用したリモートワーク環境の改善方法に関するセミナーです。中心となるソフトウェアの説明の他、既存のリモートワーク環境のセキュリティを強化するために役立つ事例も紹介していきます。
ご興味のあるかたはぜひご参加ください。

セミナー申込

関連用語

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