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.

Reenvío de puerto de servicio de Kubernetes a múltiples pods.

He configurado un servicio de Kubernetes y he iniciado 2 réplicas/pods.
Aquí están los ajustes y la descripción del servicio.

apiVersion: v1
kind: Service
metadata:
  name: my-integration
spec:
  type: NodePort
  selector:
    camel.apache.org/integration: my-integration
  ports:
    - protocol: UDP
      port: 8444
      targetPort: 8444
      nodePort: 30006
kubectl describe service my-service

Detalle:

Name:                     my-service
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 camel.apache.org/integration=xxx
Type:                     NodePort
IP Families:              <none>
IP:                       10.xxx.16.235
IPs:                      10.xxx.16.235
Port:                     <unset>  8444/UDP
TargetPort:               8444/UDP
NodePort:                 <unset>  30006/UDP
Endpoints:                10.xxx.1.39:8444,10.xxx.1.40:8444
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Lo que puedo ver es que se muestran 2 puntos finales, pero desafortunadamente solo un pod recibe eventos. Cuando elimino ese pod, el otro comienza a recibir eventos.

Mi objetivo es hacer que los 2 pods reciban eventos en Round Robin, pero no sé cómo configurar las políticas de tráfico.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para garantizar que el tráfico se distribuya de manera equitativa entre los 2 pods en un patrón de Round Robin, puedes configurar el servicio utilizando un tipo de servicio diferente llamado LoadBalancer.

    El tipo LoadBalancer asigna una dirección IP única al servicio, y cualquier tráfico dirigido a esa dirección IP se distribuirá de manera equitativa entre los pods.

    Aquí tienes un ejemplo de configuración:

    apiVersion: v1
    kind: Service
    metadata:
      name: my-integration
    spec:
      type: LoadBalancer
      selector:
        camel.apache.org/integration: my-integration
      ports:
        - protocol: UDP
          port: 8444
          targetPort: 8444
    

    Después de aplicar esta configuración con kubectl apply -f service.yml, puedes verificar la dirección IP externa asignada al servicio utilizando kubectl get service my-integration.

    Luego puedes utilizar esta dirección IP para dirigir el tráfico hacia el servicio, y debería distribuirse de manera equitativa entre los 2 pods.

Comments are closed.