Kubernetes集群REST API错误:500个内部服务器错误

时间:2019-07-16 12:34:59

标签: rest api kubernetes internal-server-error metallb

我有一个使用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会返回错误。

有人可以帮我吗?

1 个答案:

答案 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

https://github.com/moby/moby/issues/31208

https://github.com/kubernetes/kubernetes/issues/80298