es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  ,

Answer

  1. Avatar for 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:

    apiVersion: v1
    kind: Service
    metadata:
      name: api-service
    spec:
      selector:
        app.kubernetes.io/name: api-dev
      ports:
      - name: http
        port: 80
        targetPort: 8080
      type: LoadBalancer
    

    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.

Comments are closed.