Kubernetes Traefik对已删除POD的连接做了什么?

Kubernetes Traefik对已删除POD的连接做了什么?,kubernetes,traefik,Kubernetes,Traefik,假设您有一个用Traefik作为入口控制器的k8s集群 HTTP API应用程序部署到集群(具有入口资源),该集群能够处理SIGTERM,并且在处理所有活动请求之前不会退出 假设您使用10个副本部署应用程序,获得一些流量,并将部署扩展到5个副本。这5个吊舱将从匹配的服务资源中拉出 对于这5个POD,应用程序将收到SIGTERM,并开始正常关机 问题是,Traefik将如何处理那些被拉出的5个吊舱的活动连接 它是否会等到收到来自5个POD的所有响应,并且在此期间和之后不向它们发送任何流量 它是否

假设您有一个用Traefik作为入口控制器的k8s集群

HTTP API应用程序部署到集群(具有入口资源),该集群能够处理
SIGTERM
,并且在处理所有活动请求之前不会退出

假设您使用10个副本部署应用程序,获得一些流量,并将部署扩展到5个副本。这5个吊舱将从匹配的
服务
资源中拉出

对于这5个POD,应用程序将收到
SIGTERM
,并开始正常关机

问题是,Traefik将如何处理那些被拉出的5个吊舱的活动连接

  • 它是否会等到收到来自5个POD的所有响应,并且在此期间和之后不向它们发送任何流量
  • 它是否会终止与这5个吊舱的持续连接并忘记它们

Traefik将做第一件事:它将优雅地让那些挂起的飞行中请求完成,但不会将任何进一步的请求转发给终止的POD

添加一些技术背景:一旦从Kubernetes的角度认为pod终止,Endpoints controller(也是Kubernetes控制平面的一部分)将从关联的Endpoints对象中删除其IP地址。Traefik监视端点上的更新,接收通知,并相应地更新其转发规则。因此,从技术上讲,它无法转发任何进一步的流量,而这些最终请求将继续得到服务(由Go的http包中先前建立的Goroutine提供)