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を採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |
関連用語
- Kubernetesとは
- Dockerとは
- Podとは
- podmanとは
- Deploymentとは
- runcとは
- rktとは
- Kata Containerとは
- containerdとは
- gVisorとは
- CRI-Oとは
- Minikubeとは
- Microk8sとは
- Dockerfileとは