我有一个 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 配置为:
我玩过 DestinationRule(s),修改 trafficPolicy.loadBalancer.consistentHash.[httpHeaderName|httpCookie]没有运气。一旦 Envoy 移除了上游服务器,新的目的地就会使用减少的服务器集重新散列。
谢谢,
雷神