¿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: 8080Opciones
- Mantener 3 Pods de
myrepo/api:1.4.2, enlazados por las labelsapp: api(Opción correcta) - Ejecutar 8080 copias de la app en cada nodo del clúster
- Crear una base de datos llamada api con tres réplicas
- 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.