Kubernetes服务随着年龄增长而无法访问

Kubernetes服务随着年龄增长而无法访问,kubernetes,Kubernetes,我遇到了一个非常令人沮丧的问题,Kubernetes服务在部署了大约几个小时后,在其群集IP上随机停止可用。他们似乎都快老了 我的播客有hostNetwork:true和dnsPolicy:ClusterFirstWithHostNet。这里是有趣的地方——我在受影响的集群上有两个名称空间(staging和production)。在另一个只有一个名称空间的相同集群上,这个问题似乎还没有出现 在尝试查看kube代理日志时,我看到: admin@gke ~ $ tail /var/log/kube-

我遇到了一个非常令人沮丧的问题,Kubernetes服务在部署了大约几个小时后,在其群集IP上随机停止可用。他们似乎都快老了

我的播客有
hostNetwork:true
dnsPolicy:ClusterFirstWithHostNet
。这里是有趣的地方——我在受影响的集群上有两个名称空间(staging和production)。在另一个只有一个名称空间的相同集群上,这个问题似乎还没有出现

在尝试查看
kube代理
日志时,我看到:

admin@gke ~ $ tail /var/log/kube-proxy.log
E0115 12:13:01.669222       5 proxier.go:1372] can't open "nodePort for staging/foo:foo-sip-1" (:31765/tcp), skipping this nodePort: listen tcp :31765: bind: address already 
in use
E0115 12:13:01.671353       5 proxier.go:1372] can't open "nodePort for staging/foo:http-api" (:30932/tcp), skipping this nodePort: listen tcp :30932: bind: address already in use
E0115 12:13:01.671548       5 proxier.go:1372] can't open "nodePort for staging/our-lb:our-lb-http" (:32477/tcp), skipping this nodePort: listen tcp :32477: bind: address alrea
dy in use
E0115 12:13:01.671641       5 proxier.go:1372] can't open "nodePort for staging/foo:foo-sip-0" (:30130/tcp), skipping this nodePort: listen tcp :30130: bind: address already 
in use
E0115 12:13:01.671710       5 proxier.go:1372] can't open "nodePort for default/foo:foo-sip-0" (:30132/tcp), skipping this nodePort: listen tcp :30132: bind: address already 
in use
E0115 12:13:02.510177       5 proxier.go:1372] can't open "nodePort for default/our-lb:our-lb-http" (:31613/tcp), skipping this nodePort: listen tcp :31613: bind: address alrea
dy in use
E0115 12:13:06.577412       5 server.go:661] starting metrics server failed: listen tcp 127.0.0.1:10249: bind: address already in use
E0115 12:13:11.578446       5 server.go:661] starting metrics server failed: listen tcp 127.0.0.1:10249: bind: address already in use
E0115 12:13:16.580441       5 server.go:661] starting metrics server failed: listen tcp 127.0.0.1:10249: bind: address already in use
E0115 12:13:21.583691       5 server.go:661] starting metrics server failed: listen tcp 127.0.0.1:10249: bind: address already in use
我现在已经从受影响的集群中删除了一个名称空间,剩下的名称空间似乎已经修复了自己;但我很好奇为什么Kubernetes在创建资源时没有警告我,如果它不是在争夺资源,那么为什么它以后会以导致这个问题的方式重新分配资源?这不可能是DNS缓存问题,因为
getent hosts
向我显示了服务的正确群集IP-该IP无法访问!在我看来,这确实是Kubernetes网络设置中的一个bug。


我是否应该创建一个问题,或者是否存在明显的错误?

听起来您的pod带有
hostNetwork:true
,使用带有
type:NodePort
的服务,并将固定节点端口号设置为与您的pod将使用的端口号相同

通常,除非您有一个非常引人注目的用例,否则您应该避免
hostNetwork:true
。它主要用于需要访问主机网络的遗留应用程序或守护进程。
如果您确实需要与主机网络上的播客一起使用服务,您应该使用
类型为:ClusterIP

的服务。谢谢您的尝试,并会回复您!挑战在于复制它,因为它需要几个小时好的,当然,正如我所说的–在某些用例中需要它,但您不应该使用节点端口类型的服务来获取DNS。如果你想避免Kube代理一起,你可以考虑。非常感谢你!