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.
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:
Después de aplicar esta configuración con
kubectl apply -f service.yml
, puedes verificar la dirección IP externa asignada al servicio utilizandokubectl 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.