Mantener el mismo balanceador de carga al volver a implementar pods.
Desplegué un servidor web en un pod y creé un servicio de balanceo de carga de esta manera: kubectl expose deployment api --port=80 --target-port=8080 --name api-LB --type=LoadBalancer
. Sin embargo, cuando volví a desplegar el pod, digamos, con algunas actualizaciones, pareciera que pierde el enlace con el balanceador de carga. Así que tengo que crear un servicio de balanceo de carga desde el principio para obtener una IP externa. Me gustaría preguntar si hay una forma de vincular el balanceador de carga y el pod para que no haya necesidad de exponer el pod al balanceador de carga cada vez que se realizan nuevos despliegues de pod.
YAML del desarrollo de la API:
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-dev
namespace: default
spec:
template:
metadata:
name: api-dev
spec:
volumes:
- name: nfs-volume
nfs:
# URL para el servidor NFS
server: xxxx
path: xxxx
containers:
- name: api-dev
image: docker-image-at-registry
ports:
- containerPort: 80
name: server
volumeMounts:
- name: nfs-volume
mountPath: /var/nfs
imagePullSecrets:
- name: regcred
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: api-dev
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
davy.ai
Para asegurarse de que el Balanceador de carga permanezca vinculado al pod incluso después de las actualizaciones, puede utilizar un objeto de Servicio de Kubernetes con un selector que apunte al objeto de implementación. De esta manera, el objeto de Servicio enruta automáticamente el tráfico a cualquier nuevo pod creado por la implementación actualizada.
Puede crear el objeto de Servicio utilizando el siguiente YAML:
Este objeto de Servicio especifica un selector que apunta al objeto de implementación con la etiqueta
app.kubernetes.io/name: api-dev
. También expone el puerto 80, que es el puerto en el que su servidor web está escuchando en el pod, y lo asigna al puerto 8080, que es el puerto de destino en el que el servidor web está escuchando.Una vez que haya creado este objeto de Servicio, puede acceder a su servidor web utilizando la dirección IP externa asignada al Servicio. Esta dirección IP permanecerá igual incluso si actualiza el objeto de implementación, por lo que no es necesario recrear el Servicio cada vez.