Розподіл трафіку
Анотація networking.istio.io/traffic-distribution контролює те, як ztunnel розподіляє трафік між доступними точками доступу. Це корисно для збереження трафіку локальним для зменшення затримки та витрат на перехресні зони.
Підтримувані значення
| Значення | Поведінка |
|---|---|
PreferSameZone | Пріоритезуйте точки доступу за близькістю: мережа, регіон, зона, потім підзона. Трафік йде до найближчих справних точок доступу першими. |
PreferClose | Застарілий псевдонім для PreferSameZone. Див. Kubernetes enhancement proposal 3015. |
PreferSameNode | Перевага точкам доступу на тому самому вузлі, що й клієнт. |
| (не встановлено) | Без пріоритету локальності. Трафік розподіляється між усіма справними точками доступу. |
Застосування анотації
Анотацію можна застосувати до:
Service: Впливає на трафік до цього конкретного сервісуNamespace: Встановлює стандартне значення для всіх сервісів у просторі іменServiceEntry: Впливає на трафік до зовнішніх сервісів
Пріоритет
Коли налаштовано кілька рівнів, виграє найспецифічніший:
- Поле
spec.trafficDistribution(тількиService) - Анотація на
Service/ServiceEntry - Анотація на
Namespace - Стандартна поведінка (без пріоритету локальності)
Приклади
Конфігурація на рівні сервісу
Застосуйте до окремого сервісу:
apiVersion: v1
kind: Service
metadata:
name: my-service
annotations:
networking.istio.io/traffic-distribution: PreferSameZone
spec:
selector:
app: my-app
ports:
- port: 80Конфігурація на рівні простору імен
Застосуйте до всіх сервісів у просторі імен:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
annotations:
networking.istio.io/traffic-distribution: PreferSameZoneСервіси в просторі імен наслідують це налаштування, якщо у них немає власної анотації.
Перевизначення стандартних значень простору імен
Сервіс може перевизначити налаштування простору імен власною анотацією:
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: 80Сервіси без анотації наслідують налаштування простору імен.
Поведінка
PreferSameZone
З PreferSameZone, ztunnel категоризує точки доступу за локальністю та маршрутизує трафік до найближчих справних точок доступу:
- Та сама мережа, регіон, зона та підзона
- Та сама мережа, регіон та зона
- Та сама мережа та регіон
- Та сама мережа
- Будь-яка доступна кінцева точка
Якщо всі точки доступу в ближчій локальності стають несправними, трафік автоматично переключається на наступний рівень.
Наприклад, сервіс з точками доступу в зонах us-west, us-west та us-east:
- Клієнт у
us-westнадсилає весь трафік до двох точок доступуus-west - Якщо одна точка доступу
us-westвийде з ладу, трафік йде до залишкової точки доступуus-west - Якщо обидві точки доступу
us-westвийдуть з ладу, трафік переключається наus-east
PreferSameNode
З PreferSameNode, ztunnel переважає кінцеві точки, що запущені на тому самому Kubernetes вузлі, що й клієнт. Це мінімізує мережеві хопи та затримку для вузлово-локального звʼязку.
Звʼязок з Kubernetes trafficDistribution
Kubernetes 1.31 ввів поле spec.trafficDistribution на Serviceах. Ця анотація Istio надає ту саму функціональність з додатковими перевагами:
spec.trafficDistribution | Анотація | |
|---|---|---|
| Версія Kubernetes | 1.31+ | Будь-яка |
Service | Так | Так |
ServiceEntry | Ні | Так |
Namespace | Ні | Так |
Коли і поле spec, і анотація встановлені на Service, поле spec має пріоритет.
Waypoints автоматично конфігурують цю анотацію.
Дивіться також
- Балансування навантаження за локацією для маршрутизації за локальністю на основі sidecar
- Довідник анотацій