Kubernetes ReplicaSets: Una breve introducción

Kubernetes ReplicaSets: Una breve introducción

  • ITOps y DevOps
6 min de lectura Actualizado Jan 9, 2019

Puntos clave: Kubernetes ReplicaSets aseguran que son funcionen el número deseado de réplicas de pod, simplificando el despliegue en comparación con la creación manual de pods. Esta guía explica cómo utilizar y Crea ReplicaSets de forma eficaz.

  • Los ReplicaSets gestionan réplicas de pods mediante selectores de etiquetas.
  • Los ejemplos de manifiestos demuestran cómo Define y desplegar Réplicas-Conjuntos.

En esta entrada del blog son vamos a hablar sobre el concepto ReplicaSet en Kubernetes. Lo explicaremos:

  • Qué es RS
  • Para qué utilizar ReplicaSets
  • Cómo Crea

Esta publicación asume te tienes un conocimiento básico de pods, minikube y kubectl.

¿Qué son los ReplicaSets?

Un ReplicaSet está uno de los controladores de Kubernetes que se asegura de que tengamos un número especificado de réplicas de pod en funcionamiento. (Recuerda, un controlador en Kubernetes está encargado de las tareas para Haz que el estado deseado del clúster coincida con el estado observado.)

Sin RS, tendremos que Crea múltiples manifiestos para el número de pods que necesitamos, lo que es mucho trabajo para desplegar réplicas de una sola aplicación. En versiones anteriores de Kubernetes, el ReplicaSet se llamaba Replication Controller. La principal diferencia entre ambos están que los ReplicaSets nos permiten utilizar algo llamado Selector de Etiquetas.

Las etiquetas son pares clave-valor usados para especificar atributos de objetos que son significativos y útiles para los usuarios, así que ten en cuenta que no cambia la forma en que funciona el sistema central. Los selectores de etiquetas se están usados para identificar un conjunto de objetos en Kubernetes.

Los ReplicaSets nos permiten utiliza selector de etiquetas "basado en conjuntos" (por ejemplo, entorno en producción, qa) o tier notin (frontend, backend)) en contraposición a "basado en igualdad" (por ejemplo, entorno = producción o tier = frontend), que están lo que te utiliza con el controlador de replicación.

Operadores para utilizar con ReplicaSets

Son tres tipos de operadores que podemos utilizar con ReplicaSets:

  • En
  • Notin
  • Existe

ReplicaSets gestiona todos los pods con etiquetas que coinciden con el selector. Cuando se son crea pods, no diferencia entre todos, así que si te Crea otro ReplicaSets con el mismo selector de etiquetas, los anteriores pensarán que crearon esos pods, lo que causará problemas.

Esto es importante señalarlo, por lo que Haz que los selectores de etiquetas no coincidan de un ReplicaSets a otro.

¿Cómo es el manifiesto de ReplicaSet?

    apiVersion: apps/v1 # our API version
kind: ReplicaSet   # The kind we are creating
Metadata: # Specify all Metadata like name, labels
  name: some-name
  labels:
    app: some-App
    tier: some-Tier
Spec: 
  replicas: 3 # Here is where we tell k8s how many replicas we want
  Selector: # This is our label selector field. 
    matchLabels:
      tier: some-Tier
    matchExpressions:
      - {key: tier, operator: In, values: [some-Tier]} # we are using the set-based operators
  template:
    metadata:
      labels:
        app: some-App
        tier: someTier
    Spec: # This spec section should look like spec in a pod definition
      Containers:

APIVersion, kind y Metadata se parecen a cualquier otro objeto en Kubernetes, pero la sección de Especificaciones es ligeramente diferente a otros objetos. De hecho, son dos Especificaciones en el ejemplo manifiesto anterior. La primera Especificación te permite declarar cómo debe ser el replicaset y la segunda están para contenedores. ".spec.plantilla" están el único campo requerido de la primera sección de especificación. Si no tú especificas réplicas, solo se desplegará 1 pod. También están destacar que el ".spec.template.metadata.labels" debe coincidir exactamente con lo que te tiene en el ".spec.selector" (te puede Ve esto en nuestro manifiesto anterior), o Kubernetes no permitirá que se cree.

ReplicaSet: un ejemplo

Ahora que entendemos qué están un replicaset, vamos a Crea uno. En este ejemplo, desplegaremos nuestro archivo replica.yaml que Crea una app simple de frontend nginx con 3 réplicas.

    apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-replicas
  labels:
    app: myapp
    tier: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
    matchExpressions:
      - {key: tier, operator: In, values: [frontend]}
  template:
    metadata:
      labels:
        app: myapp
        tier: frontend
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

Primero ejecutamos el comando kubectl Crea para aplicar nuestro manifiesto

    $ kubectl create -f replica.yaml
replicaset.apps "myapp-replicas" created

Después, nos Haz de que están creados

    $ kubectl get replicaset
NAME                            DESIRED   CURRENT   READY     AGE
myapp-replicas                  3         3         3         15s

Vemos que son 3 desplegados y 3 listos. También podemos revisar las cápsulas.

    $ kubectl get pod
NAME                            READY     STATUS    RESTARTS   AGE
myapp-replicas-67rkp            1/1       Running   0          33s
myapp-replicas-6kfd8            1/1       Running   0          33s
myapp-replicas-s96sg            1/1       Running   0          33s

Ve los tres funcionando con 0 reinicios, lo que significa que nuestra aplicación no está fallando. También podemos describir el objeto, lo que nos dará más detalles sobre nuestras réplicas.

    $ kubectl describe replicaset myapp-replicas
Name:         myapp-replicas
Namespace:    default
Selector:     tier=frontend,tier in (frontend)
Labels:       app=myapp
              tier=frontend
Annotations:  
Replicas:     3 current / 3 desired
Pods Status:  3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  app=myapp
           tier=frontend
  Containers:
   nginx:
    Image:        nginx
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  
    Mounts:       
  Volumes:        
Events:
  Type    Reason            Age   From                   Message
  ----    ------            ----  ----                   -------
  Normal  SuccessfulCreate  12m   replicaset-controller  Created pod: myapp-replicas-6kfd8
  Normal  SuccessfulCreate  12m   replicaset-controller  Created pod: myapp-replicas-67rkp
  Normal  SuccessfulCreate  12m   replicaset-controller  Created pod: myapp-replicas-s96sg

Preguntas frecuentes sobre ReplicaSet

Aquí tienes algunas preguntas frecuentes rápidas sobre ReplicaSets.

¿Y si ya no necesitamos 3 réplicas, ahora solo necesitamos una?

Solo tenemos que hacer están cambiar el campo réplica al valor que queremos y k8s lo escalará a ese número. Por ejemplo, "réplicas: 1". Si Haz el cambio y volvemos a aplicar, solo tendremos una réplica en funcionamiento.

¿Podemos quitar la cápsula de un ReplicaSets?

Sí, podemos. están tan simple como quitar la etiqueta del pod y se eliminará del set.

¿Cómo limpiar el RS?

Para eliminar replicaset, solo tenemos que hacer están ejecutar "kubectl delete replicaset myapp-replicas". Este comando eliminará los replicasets y los pods.

En general, Kubernetes recomienda utilizar un controlador de despliegue (un concepto de nivel superior que gestiona ReplicaSets y proporciona actualizaciones declarativas a los pods junto con muchas otras funciones útiles) en lugar de ReplicaSets.

Recursos adicionales

Para más información sobre Kubernetes, explora estos recursos:

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.