我有一个使用kubespray部署的k8s集群。 使用的负载均衡器是metalLB。 我已经在这个集群中部署了一个舵图,该舵图具有一个REST服务,其地址为10.0.8.26:50028
我正在向该服务发送请求:
http://10.0.8.26:50028/data/v3/authentication
http://10.0.8.26:50028/data/v3/actions
http://10.0.8.26:50028/data/v3/versions
但是每次我调用一个端点时,它都会按顺序返回响应:
503个运输即将结束
500内部服务器
500内部服务器
204-正确的答案
当我呼叫每个端点时,将返回相同的顺序。一旦返回正确的响应,此后就没有错误。但是尝试使用新的Endpoint会返回错误。
有人可以帮我吗?
答案 0 :(得分:0)
此错误与集群中服务之间的连接有关。集群在IPVS模式下使用kube-proxy。由于IPVS超时(在节点中),服务之间的连接在900秒后终止:
$ ipvsadm -l --timeout
Timeout (tcp tcpfin udp): 900 120 300
这意味着tcp连接被另一个代理终止。 我的应用程序使用grpc协议在某些服务之间进行通信。 因此,在将应用程序代码中的grpc keepalive和pod的tcp keepalive设置为较低的值后,此问题已解决。
以下链接可能会提供更多详细信息:
https://success.docker.com/article/ipvs-connection-timeout-issue