Distribución de tráfico
La anotación networking.istio.io/traffic-distribution controla cómo ztunnel distribuye el tráfico entre los endpoints disponibles. Es útil para mantener el tráfico local y reducir la latencia y los costos entre zonas.
Valores soportados
| Valor | Comportamiento |
|---|---|
PreferSameZone | Prioriza los endpoints por proximidad: red, región, zona y subzona. El tráfico va primero a los endpoints más cercanos y disponibles. |
PreferClose | Alias obsoleto de PreferSameZone. Consulta la propuesta de mejora de Kubernetes 3015. |
PreferSameNode | Prefiere endpoints en el mismo nodo que el cliente. |
| (sin definir) | Sin preferencia de localidad. El tráfico se distribuye entre todos los endpoints disponibles. |
Aplicar la anotación
La anotación puede aplicarse a:
Service: Afecta el tráfico hacia ese servicio específicoNamespace: Establece el valor por defecto para todos los servicios del namespaceServiceEntry: Afecta el tráfico hacia servicios externos
Precedencia
Cuando se configuran múltiples niveles, el más específico prevalece:
- Campo
spec.trafficDistribution(solo enService) - Anotación en
Service/ServiceEntry - Anotación en
Namespace - Comportamiento por defecto (sin preferencia de localidad)
Ejemplos
Configuración por servicio
Aplica a un servicio único:
apiVersion: v1
kind: Service
metadata:
name: my-service
annotations:
networking.istio.io/traffic-distribution: PreferSameZone
spec:
selector:
app: my-app
ports:
- port: 80Configuración a nivel de namespace
Aplica a todos los servicios de un namespace:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
annotations:
networking.istio.io/traffic-distribution: PreferSameZoneLos servicios del namespace heredan esta configuración a menos que tengan su propia anotación.
Anular el valor por defecto del namespace
Un servicio puede anular la configuración del namespace con su propia anotación:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
annotations:
networking.istio.io/traffic-distribution: PreferSameZone
---
apiVersion: v1
kind: Service
metadata:
name: different-service
namespace: my-namespace
annotations:
networking.istio.io/traffic-distribution: PreferSameNode
spec:
selector:
app: different-app
ports:
- port: 80Los servicios sin anotación heredan la configuración del namespace.
Comportamiento
PreferSameZone
Con PreferSameZone, ztunnel categoriza los endpoints por localidad y enruta hacia los más cercanos disponibles:
- Misma red, región, zona y subzona
- Misma red, región y zona
- Misma red y región
- Misma red
- Cualquier endpoint disponible
Si todos los endpoints de una localidad más cercana dejan de estar disponibles, el tráfico hace failover automáticamente al siguiente nivel.
Por ejemplo, un servicio con endpoints en las zonas us-west, us-west y us-east:
- Un cliente en
us-westenvía todo el tráfico a los dos endpoints deus-west - Si un endpoint de
us-westfalla, el tráfico va al endpoint deus-westrestante - Si ambos endpoints de
us-westfallan, el tráfico hace failover aus-east
PreferSameNode
Con PreferSameNode, ztunnel prefiere los endpoints que se ejecutan en el mismo nodo de Kubernetes que el cliente. Esto minimiza los saltos de red y la latencia para la comunicación dentro del mismo nodo.
Relación con trafficDistribution de Kubernetes
Kubernetes 1.31 introdujo el campo spec.trafficDistribution en los Service. Esta anotación de Istio proporciona la misma funcionalidad con beneficios adicionales:
spec.trafficDistribution | Anotación | |
|---|---|---|
| Versión de Kubernetes | 1.31+ | Cualquiera |
Service | Sí | Sí |
ServiceEntry | No | Sí |
Namespace | No | Sí |
Cuando se establecen tanto el campo spec como la anotación en un Service, el campo spec tiene precedencia.
Los waypoints configuran esta anotación automáticamente.
Ver también
- Balanceo de carga por localidad para el enrutamiento por localidad basado en sidecar
- Referencia de anotaciones