LoginSignup
0
0

More than 5 years have passed since last update.

Kubernetes Workloadsリソース: ReplicaSet について

Last updated at Posted at 2019-01-18

「Kubernetes完全ガイド」 を元に、Workloadsリソースの動作確認を行った結果をまとめます。

実行環境 / 参考情報

Kubernetes / kubectl version : 1.5.2
CentOS 7.4

構築手順1構築手順2
Kubernetes Workloadsリソースについて

ReplicaSet

Podのレプリカを作成、維持するリソース
image.png
出典:「Kubernetes完全ガイド」

ReplicaSetの作成

sample-rs.yaml
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: sample-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.12
          ports:
            - containerPort: 80

作成すると指定したレプリカ数(例:3つ)分、Podが起動

[root@master ~]# kubectl apply -f sample-rs.yaml
replicaset "sample-rs" created

[root@master ~]# kubectl get pods
NAME              READY     STATUS    RESTARTS   AGE
sample-rs-1n0r5   1/1       Running   0          47s
sample-rs-2kgsb   1/1       Running   0          47s
sample-rs-2q7z4   1/1       Running   0          47s

[root@master ~]# kubectl get replicasets
NAME        DESIRED   CURRENT   READY     AGE
sample-rs   3         3         3         1m

各レプリカは、耐障害性の観点でmaster / workerノードに分散されている事が確認出来る

[root@master ~]# kubectl get pods -o wide
NAME              READY     STATUS    RESTARTS   AGE       IP             NODE
sample-rs-1n0r5   1/1       Running   0          21m       172.17.0.2     worker
sample-rs-2kgsb   1/1       Running   0          21m       172.17.0.130   master
sample-rs-2q7z4   1/1       Running   0          21m       172.17.0.3     worker

Podの停止と自己修復

image.png
出典:「Kubernetes完全ガイド」

[root@master ~]# kubectl get pods -o wide
NAME              READY     STATUS    RESTARTS   AGE       IP             NODE
sample-rs-2kgsb   1/1       Running   0          28m       172.17.0.130   master
sample-rs-2q7z4   1/1       Running   0          28m       172.17.0.3     worker
sample-rs-pz8fv   1/1       Running   0          25s       172.17.0.131   master

Podを1台停止すると、ReplicaSetによりPodが新規に作成される

[root@master ~]# kubectl delete pod sample-rs-pz8fv
pod "sample-rs-pz8fv" deleted

[root@master ~]# kubectl get pods -o wide
NAME              READY     STATUS    RESTARTS   AGE       IP             NODE
sample-rs-2kgsb   1/1       Running   0          28m       172.17.0.130   master
sample-rs-2q7z4   1/1       Running   0          28m       172.17.0.3     worker
sample-rs-d91nh   1/1       Running   0          2s        172.17.0.2     worker

ReplicaSetのラベル

ReplicaSetは、Podのラベル名を監視してレプリカ数を維持
上の例ではspec.selector.matchLabels.appに、Podの監視対象のラベル名を指定 → 実際にコンテナに付与されるラベル名(例:spec.template.metadata.labels)と合わせないとエラーとなる

image.png
出典:「Kubernetes完全ガイド」

また、別のPod(ReplicaSet以外)で同じラベル名のものを立てた場合、ReplicaSetにより、新規に作成された同一ラベル名のPodが削除されてしまう。

ラベル名は固有なものを維持するようにする

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0