ON THIS PAGE
ReplicationController
Ha aprendido cómo iniciar una caja Pod que representa los contenedores de su archivo YAML en el capítulo 2. Una pregunta puede aparecer en su contenedor: ¿Qué sucede si necesito tres pods que son exactamente iguales (cada uno ejecuta un contenedor de Apache) para asegurarse de que el servicio Web parezca más sólido? Cambio el nombre en el archivo YAML repetir los mismos comandos para crear los pods requeridos? ¿O quizás con una secuencia de Shell? Kubernetes ya tiene los objetos para abordar esta demanda con RC- ReplicationController
, o RS– ReplicaSet
.
Una ReplicationController (RC) garantiza que se esté ejecutando un número específico de réplicas del conjunto Pod al mismo tiempo. En otras palabras, un controlador de replicación garantiza que una Pod o un conjunto homogéneo de pods siempre está activo y disponible.
Creación de un RC
A’continuación, crearé un RC con un ejemplo. Primero, cree un archivo YAML para un objeto RC llamado WebServer:
Recuerde que Kind indica el tipo de objeto que define este archivo YAML, es un RC en lugar de un pod. En los metadatos, se muestra’el nombre RC s como webserver. Spec es la especificación detallada de este objeto RC, y las réplicas: 3 indica que se clonará el mismo conjunto POD para asegurarse de que el número total de pods creado por RC sea siempre de tres. Por último, la plantilla proporciona información acerca de los contenedores que se ejecutarán en la caja Pod, el mismo que se vio en un archivo Pod YAML. A continuación, utilice este archivo YAML para crear el objeto RC:
Si es lo suficientemente rápido, puede capturar el estado intermedio al crear los nuevos conjuntos de Pod:
$ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5ggv6 1/1 Running 0 9s webserver-lbj89 0/1 ContainerCreating 0 9s webserver-m6nrx 0/1 ContainerCreating 0 9s
Finalmente, verá tres pods lanzados:
$ kubectl get rc NAME DESIRED CURRENT READY AGE webserver 3 3 3 3m29s $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5ggv6 1/1 Running 0 21m webserver-lbj89 1/1 Running 0 21m webserver-m6nrx 1/1 Running 0 21m
RC funciona directamente con el conjunto Pod. Los flujos de trabajo se muestran en la Figure 1.
Con el parámetro replicas especificado en el archivo YAML del objeto RC, el controlador de duplicación Kubernetes, que se ejecuta como parte del proceso Administrador de Kube-Controller-Manager en el nodo Master, seguirá supervisando el número de pods en ejecución generados por RC y iniciará automáticamente otros nuevos si alguno de ellos fallara. Lo más importante para aprender es que los conjuntos de Pod individuales se pueden morir en cualquier momento, pero el pool en general está siempre en funcionamiento, lo que hace que sea un servicio sólido. Lo entenderá mejor cuando aprenda el servicio Kubernetes.
Probar RC
Puede probar un impacto de’RC s eliminando uno de los pods. Para eliminar un recurso con kubectl, utilice el subcomando kubectl delete:
$ kubectl delete pod webserver-5ggv6 pod "webserver-5ggv6" deleted $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5ggv6 0/1 Terminating 0 22m #<--- webserver-5v9w6 1/1 Running 0 2s #<--- webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5v9w6 1/1 Running 0 5s webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m
Como puede ver, cuando se termina un conjunto Pod, se genera inmediatamente un nuevo conjunto Pod. Finalmente, el conjunto Pod antiguo desaparecerá y el nuevo conjunto Pod estará activo y en ejecución. El número total de pods que se ejecutan permanecerá inalterado.
También puede escalar hacia arriba o hacia abajo las réplicas con RC. Por ejemplo, para aumentar la escala desde el número de 3 al 5:
$ kubectl scale rc webserver --replica=5 replicationcontroller/webserver scaled $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5v9w6 1/1 Running 0 8s webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m webserver-hnnlj 0/1 ContainerCreating 0 2s webserver-kbgwm 1/1 ContainerCreating 0 2s $ kubectl get pod NAME READY STATUS RESTARTS AGE webserver-5v9w6 1/1 Running 0 10s webserver-lbj89 1/1 Running 0 22m webserver-m6nrx 1/1 Running 0 22m webserver-hnnlj 1/1 Running 0 5s webserver-kbgwm 1/1 Running 0 5s
RC ofrece otras ventajas. En realidad, dado que esta abstracción es tan popular y muy utilizada, dos objetos muy similares, la implementación de – ReplicaSet e implementar, se han desarrollado con características más eficaces. En términos generales, puede llamarles RC de nueva generación. Por ahora,’deje de explorar más características de RC y mueva nuestro enfoque a estos dos objetos nuevos.
Antes de pasar al siguiente objeto, puede eliminar el RC:
$ kubectl delete rc webserver replicationcontroller/webserver deleted