我有一个名为orderProcessor的K8s服务,它有5个pods。根据HTTP请求头部,我希望将orderId调用路由到特定的pods。
例如:
具有orderId ABC的requestId应始终转至Pod A,而具有orderId PQR的requestId应始终转至Pod B
如果pod A关闭并替换为Pod C,则所有带有orderId ABC的请求都应转到Pod C。
基本上,对于相同的头部值,请求应该总是在相同的pod中结束。
在服务级别上这是可能的吗?如何做到这一点?
发布于 2021-01-27 18:04:19
这是一个社区维基答案。您可以随意扩展它。
正如在评论中已经提到的,不可能在服务级别配置它,因为它在没有"HTTP Header“概念的第4层上操作。
另一种方法是为该任务选择一个合适的Ingress控制器。例如,您可以从以下选项中选择:
上运行)
请记住,不同的控制器支持不同的注解集,因此如果您将它们混合在一起,其中一些注解将无法满足。您可以找到上面提到的here和here之间的一些关键区别。
编辑:
包括来自评论的VASャ建议:
I recon,配置为反向代理的常规nginx pod和作为后端端点的StatefulSet pod的组合可以做到这一点。StatefullSet中的每个pod都有自己的永久名称和Kubernetes DNS服务中的A记录,所以您可以在nginx配置中参考pod名称。
https://stackoverflow.com/questions/65791825
复制相似问题