Kubernetes中traefik的会话保持和负载均衡策略配置方式
Posted 嗡汤圆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes中traefik的会话保持和负载均衡策略配置方式相关的知识,希望对你有一定的参考价值。
Traefik是一个开源的反向代理工具,在Kubernetes集群内充当Ingress的角色,具有高性能,配置灵活,可根据Kubernetes服务动态配置等优点。
官方文档: Traefik
Traefik的默认配置为不做会话保持,即同一个用户的请求会在后端应用的不同实例之间切换。对于需要通过Session维持登录状态的服务就会出现登录无效的问题。而Traefik对于其配置教程在官方文档中Kubernetes Ingress Provider 描述并不详细。这里通过查询和尝试后发现对于会话保持和负载均衡策略的配置不是直接体现在traefik配置文件中的,而是在其对应后端Service中添加annotations来实现。例如:
对于xxxservice我们声明一个traefik
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: xxx-service-traefik
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: PathPrefix
spec:
rules:
- host: xxx.xxx.com
http:
paths:
- path: /xxx
backend:
serviceName: xxx-service
servicePort: 80
这里通过 kubernetes.io/ingress.class
指定使用Traefik作为Ingress实现,而Traefik的前端特性配置完全可以按照官方配置参数进行。
对于后端的会话保持和负载略则应该在对应的Service中进行配置,这里的例子就是xxx-service。 配置文件如下:
apiVersion: v1
kind: Service
metadata:
name: xxx-service
annotations:
traefik.ingress.kubernetes.io/affinity: "true"
traefik.ingress.kubernetes.io/session-cookie-name: "xxx"
traefik.ingress.kubernetes.io/load-balancer-method: drr
如上traefik.ingress.kubernetes.io/affinity
和 traefik.ingress.kubernetes.io/session-cookie-name: "xxx"
配置了会话保持特性
traefik.ingress.kubernetes.io/load-balancer-method
将负载均衡策略从默认的 drr
改为了 wrr
如下图所示,默认配置和修改后的配置对比:
以上是关于Kubernetes中traefik的会话保持和负载均衡策略配置方式的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes入口中基于Traefik路径的路由无法按预期工作