Не совсем так: POD
.
Вы можете использовать сходство сеансов на основе IP-адреса клиента, что, конечно, только в том случае, если IP-адрес клиента является статическим и только один клиент на IP-адрес.
apiVersion: v1
kind: Service
metadata:
name: wlp-service
labels:
app: wlp-service
spec:
type: LoadBalancer
sessionAffinity: ClientIP
ports:
- port: 443
targetPort: 7443
name: https
- port: 80
targetPort: 7080
name: http
selector:
app: POD_NAME
Второй вариант - это сессионная близость, основанная на Cookies.Это будет работать, если есть несколько клиентов с одного и того же IP-адреса, поскольку файлы cookie хранятся локально на клиентском компьютере.
Вам потребуется использовать объект Ingress
и создавать файлы cookie.Ваше развертывание Ingress
должно иметь:
Annotations:
affinity: cookie
session-cookie-hash: sha1/md5/index #choose one
session-cookie-name: INGRESSCOOKIE #name used in cookie value
Вы можете узнать больше об этих двух способах на Перенаправить своих пользователей в один и тот же модуль, используя сродство сеанса в Kubernetes по среде.com
Если я не ошибаюсь, Session Affinity будет работать, только если модули ядра IPVS установлены на узле до запуска kube-proxy.
Запуск kube-proxy в режиме IPVS
В настоящее время локальные сценарии, сценарии GCE и kubeadm поддерживают переключение режима прокси IPVS посредством экспорта переменных среды (KUBE_PROXY_MODE=ipvs
) или указания флага (--proxy-mode=ipvs
).Перед запуском прокси-сервера IPVS убедитесь, что необходимые модули ядра IPVS уже установлены.
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
Наконец, для Kubernetes v1.10 для функции gateway SupportIPVSProxyMode
по умолчанию установлено значение true
.Для Kubernetes v1.11 шлюз функций полностью удален.Однако вам необходимо явно включить --feature-gates=SupportIPVSProxyMode=true
для Kubernetes до v1.10.
Пожалуйста, проверьте этот вопрос StackOverflow Возможно ли перенаправить трафик на определенный Pod? , такжеВы можете узнать больше об IPVS на Балансировка нагрузки в кластере на основе IPVS Deep Dive