ReplicaSet
ReplicaSet objeto, o RS, es prácticamente igual que un objeto RC, con tan solo una excepción – importante la apariencia del 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 utiliza solamente selectores de igual a , mientras que RS es compatible con un formato de selector adicional, basado en el definido. Funcionalmente, las dos formas de selectores realizan el – mismo trabajo—que selecciona la caja Pod con una etiqueta coincidente:
#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
Se crea una RS que inicia un conjunto Pod, exactamente lo mismo que lo haría una RC. Si comparas el kubectl describe
en los dos objetos:
$ 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
Como puede ver, en su mayor parte, las salidas son iguales, con la única excepción del formato de selector. También puede ajustar la escala de la RS de la misma manera que lo haría con 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
Antes de pasar al siguiente objeto, elimine la reinterface:
$ kubectl delete rs webserver replicaset.extensions/webserver deleted