Cómo crear un Replicaset en Kubernetes
Un conjunto de réplicas se asegura de que las réplicas especificadas de los pods estén siempre en funcionamiento. Puede considerarse como un sustituto del controlador de replicación. La principal diferencia entre ambos es que los ReplicaSets nos permiten utilizar algo llamado «Selector de Etiquetas«. Replicaset es uno de los controladores de Kubernetes. Se utiliza para asegurarnos de que tenemos un número determinado de réplicas de pods que están siempre en funcionamiento.
La plantilla del conjunto de réplicas tiene el siguiente aspecto.
apiVersion: apps/v1 kind: ReplicaSet Metadata: name: some-name labels: app: some-App tier: some-Tier Spec: replicas: 3 # Here we tell k8s how many replicas we want Selector: # A label selector field. matchLabels: tier: some-Tier matchExpressions: - {key: tier, operator: In, values: [some-Tier]} #set-based operators template: metadata: labels: app: some-App tier: someTier Spec: Containers:
En este artículo, veremos cómo crear un conjunto de réplicas y cómo identifica los pods con etiquetas.
Requisitos previos
Clúster Kubernetes con al menos 1 nodo trabajador.
Si quieres aprender a crear un Clúster Kubernetes, haz clic aquí. Esta guía te ayudará a crear un clúster Kubernetes con 1 Maestro y 2 Nodos en Instancias EC2 Ubuntu 18.04 de AWS.
Qué haremos
- Crear un Replicaset
Crear un Replicaset
Crea un nuevo archivo y añade en él la siguiente definición de conjunto de réplica.
vim my-replica-set.yml
apiVersion: apps/v1 kind: ReplicaSet metadata: name: nginx-proxy labels: app: nginx-proxy tier: frontend spec: # modify replicas according to your case replicas: 3 selector: matchLabels: tier: frontend template: metadata: labels: tier: frontend spec: containers: - name: nginx image: nginx
La definición del objeto anterior creará tres réplicas del pod.
En primer lugar, comprueba el conjunto de réplicas existente utilizando el siguiente comando.
kubectl get replicaset
Para crear una réplica dijo ejecuta el siguiente comando.
kubectl create -f my-replica-set.yml
kubectl get replicaset
kubectl get pods
En la captura de pantalla anterior, puedes ver los detalles de los pods creados tras crear un conjunto de réplicas.
Ahora crea un pod individual con las mismas etiquetas que especificamos anteriormente en la definición del conjunto de réplica.
vim my-test-pod.yml
apiVersion: v1 kind: Pod metadata: name: pod1 labels: tier: frontend spec: containers: - name: nginx image: nginx
Ahora, si creamos esto, no se creará.
Ejecuta los siguientes comandos para crear los pods anteriores y crear un nuevo pod.
kubectl get pods
kubectl create -f my-test-pod.yml
kubectl get pods
En la captura de pantalla anterior, puedes ver que incluso después de crear un nuevo pod, éste se encuentra en estado de terminación. El motivo es que ya tenemos un conjunto de réplicas con réplicas como 3 y estamos creando un nuevo pod por separado con las mismas etiquetas. Como las etiquetas y los selectores coinciden con el conjunto de réplicas, elimina el pod para mantener el recuento de réplicas que especificamos en la definición del conjunto de réplicas.
Puedes obtener los detalles del conjunto de réplicas utilizando los siguientes comandos.
kubectl get replicaset
kubectl describe replicaset nginx-proxy
En la captura de pantalla anterior, puedes ver que un conjunto de réplicas borra el pod para mantener el número de réplicas.
Ahora vamos a crear un pod sin etiqueta utilizando la siguiente definición de pod.
vim my-test-pod-no-label.yml
apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: nginx image: nginx
Para crear un nuevo pod sin ninguna etiqueta ejecuta el siguiente comando.
kubectl get pods
kubectl create -f my-test-pod-no-label.yml
kubectl get pods
En la captura de pantalla anterior, puedes ver que se ha creado un nuevo pod y que el conjunto de réplicas no ha eliminado el nuevo pod esta vez.
El motivo es que el nuevo pod no tiene ninguna etiqueta, por lo que el conjunto de réplicas no coincide con él y no lo considera parte del conjunto de réplicas.
Ahora vamos a intentar crear un puerto que pertenezca al conjunto de réplicas.
Ejecuta los siguientes comandos para eliminar un pod.
kubectl get pods
kubectl delete pod nginx-proxy-6gc46
kubectl get pods
En la captura de pantalla anterior, puedes ver que incluso después de eliminar un pod que pertenece al conjunto de réplicas se creó un nuevo pod. Se ha creado un nuevo pod para mantener el número de réplicas que especificamos en la definición del conjunto de réplicas.
Ahora, cuando ya no necesites tu conjunto de réplicas, puedes eliminarlo utilizando los siguientes comandos.
kubectl get replicaset
kubectl delete replicaset nginx-proxy
kubectl get replicaset
kubectl get pods
Como el pod que hemos creado por separado no forma parte del conjunto de réplicas, tenemos que eliminarlo por separado.
Utiliza los comandos. Para eliminar el pod que no pertenece al conjunto de réplica.
kubectl get pods
kubectl delete pod pod1
kubectl get pods
Conclusión
En este artículo hemos visto cómo crear un conjunto de réplica simple. También hemos visto cómo un pod pasa a formar parte de un conjunto de réplicas si la etiqueta coincide con el selector disponible en el conjunto de réplicas.