30-45分钟后,与API服务器的分块HTTP连接被删除:
Transmission Control Protocol, Src Port: http-alt (8080), Dst Port: 55782 (55782), Seq: 751, Ack: 88, Len: 0
.... 0000 0001 0001 = Flags: 0x011 (FIN, ACK)
无论活动级别如何,都会发生这种情况,即对于长时间闲置的连接,以及在整个连接期间都有通知的连接,都会发生这种情况。 HTTP 1.0(带有Connection: Keep-Alive
标头)只结束原始请求,而默认情况下保持活动状态的HTTP 1.1在删除连接之前发送400 Bad Request
。
是否可以长时间保持手表连接?
答案 0 :(得分:4)
一旦您确定您的客户正确处理断开连接,您就可以使用以下kube-apiserver标志来控制apiserver让手表保持打开的时间:
https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/admin/kube-apiserver.md
--min-request-timeout=1800: An optional field indicating the minimum number of seconds a handler must keep a request open before timing it out. Currently only honored by the watch request handler, which picks a randomized value above this number as the connection timeout, to spread out load.
使用较小的值进行测试,在具有较大值的生产中运行。
答案 1 :(得分:1)
手表应该定期丢弃 - 它们只是下面的长HTTP GET操作,具有超时功能。这是故意的。这会引起问题吗?