Kubernetes API 服务器断开监视连接
Kubernetes API server drops watch connections
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)
无论 activity 级别如何,都会发生这种情况,即它会发生在长时间空闲的连接上,但也会发生在整个连接期间都有通知的连接上。 HTTP 1.0(使用 Connection: Keep-Alive
header)只是结束原始请求,而默认情况下保持活动状态的 HTTP 1.1 在断开连接之前发送 400 Bad Request
。
是否有可能获得长时间保持活动状态的手表连接?
手表应该定期掉线 - 它们只是下面的长 HTTP GET 操作,有超时。这是故意的。是否引起问题?
一旦您确定您的客户端正确处理断开连接,您可以使用以下 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.
使用较小的值进行测试,运行使用较大的值进行生产。
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)
无论 activity 级别如何,都会发生这种情况,即它会发生在长时间空闲的连接上,但也会发生在整个连接期间都有通知的连接上。 HTTP 1.0(使用 Connection: Keep-Alive
header)只是结束原始请求,而默认情况下保持活动状态的 HTTP 1.1 在断开连接之前发送 400 Bad Request
。
是否有可能获得长时间保持活动状态的手表连接?
手表应该定期掉线 - 它们只是下面的长 HTTP GET 操作,有超时。这是故意的。是否引起问题?
一旦您确定您的客户端正确处理断开连接,您可以使用以下 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.
使用较小的值进行测试,运行使用较大的值进行生产。