Repaso
English
Cloud y DevOpsIntermedioOPS-46

¿Qué declara este manifiesto?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: myrepo/api:1.4.2
          ports:
            - containerPort: 8080

Opciones

  1. Mantener 3 Pods de myrepo/api:1.4.2, enlazados por las labels app: api (Opción correcta)
  2. Ejecutar 8080 copias de la app en cada nodo del clúster
  3. Crear una base de datos llamada api con tres réplicas
  4. Abrir el puerto 3 en el nodo para acceder a la app

Respuesta

Mantener 3 Pods en marcha de la imagen myrepo/api:1.4.2; el selector enlaza el Deployment con los Pods con la label app: api

Por qué

Un Deployment es una declaración de estado deseado: "quiero 3 réplicas de esta plantilla de Pod".

template describe cada Pod (labels y contenedores). selector.matchLabels le dice al Deployment qué Pods le pertenecen, así que las labels de template.metadata.labels deben coincidir.

Si un Pod muere, Kubernetes crea otro para mantener 3. Cambiar la etiqueta de la imagen dispara un rolling update.

Recuerda

Deployment = réplicas deseadas + plantilla de Pod; las labels los enlazan.

Términos clave

Practica esta pregunta en Repaso