Traefik对删除Pod的连接做了什么?

时间:2018-01-11 07:22:02

标签: kubernetes traefik

想象一下,你有一个k8s集群设置Traefik作为Ingress控制器。

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

假设您使用10个副本部署应用程序,获取一些流量并将部署扩展到5个副本。这5个Pod将从匹配的Service资源中提取出来。

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

问题是,Traefik将如何处理拔出5个Pod的活跃连接?

  • 是否会等到收到5个Pod的所有回复,并且在此期间和之后没有向他们发送任何流量?
  • 是否会终止与这5个Pod的持续连接而忘记它们?

1 个答案:

答案 0 :(得分:1)

Traefik会做第一个:它会优雅地让那些待处理的飞行中请求完成,但不会向终止吊舱转发任何进一步的请求。

添加一些技术背景:一旦认为吊舱从Kubernetes'透视,端点控制器(也是Kubernetes控制平面的一部分)将从关联的端点对象中删除其IP地址。 Traefik监视端点上的更新,接收通知,并相应地更新其转发规则。从技术上讲,它不能转发任何进一步的流量,而这些最终请求将继续提供(由Go的http包中先前建立的goroutines)。