在Kubernetes中,如何使用Ingress实现会话关联?

时间:2015-11-19 00:04:25

标签: kubernetes

我想实现一个粘性会话Ingress控制器。 Cookie或IP哈希都可以;只要同一个客户端通常路由到同一个广告连接,我就会感到高兴。

我坚持的观点:似乎Kubernetes服务模式意味着我的连接将被随机代理,无论如何。我可以使用会话亲和性配置我的Ingress控制器,但是一旦连接超过了该服务并点击服务,kube-proxy就会随机路由我。服务上有sessionAffinity: ClientIP标志,但这对我没有帮助 - 客户端IP将始终是Ingress pod的内部IP。

我错过了什么吗?鉴于Kubernetes'目前的架构?

2 个答案:

答案 0 :(得分:1)

入口控制器可以完全绕过kube-proxy。例如,haproxy控制器does this and goes straight to endpoints。但它doesn't use the Ingress in the typical sense

您可以do the same with the nginx controller,只需查找端点并插入它们而不是当前使用的DNS名称(即交换this line以获取指向包含端点的上游的指针)。

答案 1 :(得分:1)

我评估了haproxy控制器,但无法使用会话亲和性使其可靠运行。经过一些研究后,我发现Nginx Ingress Controller,因为0.61版本还包含 nginx-sticky-module-ng 模块,现在我们的测试环境中已经运行了几天。我创建了一个Gist来设置所需的Kubernetes部分,因为在现有文档中有一些重要的配置有点难以找到。祝你好运!