ReplicaSet
ReplicaSet, or rs object, is pretty much the same thing as an rc object, with just one major exception – the looks of selector:
#rs-webserver-do.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: webserver labels: app: webserver spec: replicas: 3 selector: matchLabels: #<--- app: webserver #<--- matchExpressions: #<--- - {key: app, operator: In, values: [webserver]} #<--- template: metadata: name: webserver labels: spec: containers: - name: webserver image: contrailk8sdayone/contrail-webserver securityContext: privileged: true ports: - containerPort: 80webservercontrailK8sdayone
Rc uses equally-based selectors only, while rs supports an extra selector format, set-based. Functionally the two forms of selectors do the same job – that is—select the pod with a matching label:
#RS selector matchLabels: app: webserver webserver matchExpressions: - {key: app, operator: In, values: [webserver]} #RC selector app: webserver webserver $ kubectl create -f rs-webserver.yaml replicaset.extensions/webserver created $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-lkwvt 1/1 Running 0 8s
An rs is created and it launches a pod, just the same as what
an rc would do. If you compare the kubectl describe
on the two objects:
$ kubectl describe rs webserver ...... Selector: app=webserver,app in (webserver) #<--- ...... Type Reason Age From Message ...... ...... .... .... ...... Normal SuccessfulCreate 15s replicaset-controller Created pod: webserver-lkwvt $ kubectl describe rc webserver ...... Selector: app=webserver #<--- ...... Type Reason Age From Message ...... ...... .. . .... ...... Normal SuccessfulCreate 19s replication-controller Created pod: webserver-lkwvt
As you can see, for the most part the outputs are the same, with the only exception of the selector format. You can also scale the rs the same way as you would do with rc:
$ kubectl scale rs webserver --replicas=5 replicaset.extensions/webserver scaled $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-4jvvx 1/1 Running 0 3m30s webserver-722pf 1/1 Running 0 3m30s webserver-8z8f8 1/1 Running 0 3m30s webserver-lkwvt 1/1 Running 0 4m28s webserver-ww9tn 1/1 Running 0 3m30s
Before moving to the next object, delete the rs:
$ kubectl delete rs webserver replicaset.extensions/webserver deleted