小编T. *_*ren的帖子

有没有办法配置 Istio 将流量路由到处于终止状态的 POD?

我有一个 Kubernetes 集群,部署了两个服务:SvcA 和 SvcB - 都在服务网格中。

SvcA 由单个 Pod SvcA_P1 支持。SvcA_P1 中的应用程序公开了一个 PreStop HTTP 钩子。当在 SvcA_P1 所在的节点上执行“kubectl drain”命令时,Pod 转换到“终止”状态并保持该状态直到应用程序完成其工作(其余请求返回并且 Kubernetes 移除 Pod)。SvcA_P1 的工作包括完成正在进行的对话(属于已建立的会话)HTTP 请求/响应。它可以在完成之前保持“终止”状态数小时。

当 Pod 进入“终止”阶段时,Istio sidecar 似乎从池中删除了 SvcA_P1。从例如 SvcB_P1 发送到 SvcA_P1 的请求被拒绝,并带有“上游不健康”。

有没有办法将 Istio/Envoy 配置为:

  1. 在处于“终止”状态时继续发送与 SvcA_P1 具有亲缘关系的流量/会话?
  2. 拒绝与 SvcA_P1 没有会话关联的流量(没有 JSESSIONID、cookie 或特殊的 HTTP 标头)?

我玩过 DestinationRule(s),修改 trafficPolicy.loadBalancer.consistentHash.[httpHeaderName|httpCookie]没有运气。一旦 Envoy 移除了上游服务器,新的目的地就会使用减少的服务器集重新散列。

谢谢,

雷神

kubernetes istio

5
推荐指数
1
解决办法
545
查看次数

标签 统计

istio ×1

kubernetes ×1