gpt4 book ai didi

Kubernetes 服务随着时间的推移无法访问

转载 作者:行者123 更新时间:2023-12-02 02:57:46 27 4
gpt4 key购买 nike

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

我的 pod 有 hostNetwork: truednsPolicy: ClusterFirstWithHostNet。这是事情变得有趣的地方——我在受影响的集群上有两个命名空间(暂存和生产)。在另一个只有一个命名空间的相同集群上,这个问题似乎还没有出现!

在尝试查看 kube-proxy 日志时,我看到了以下内容:

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

我现在已经从受影响的集群中删除了一个 namespace ,而其余的 namespace 似乎已自行修复;但我很好奇为什么 Kubernetes 在创建资源时没有警告我,如果它不是竞争资源,那么为什么它稍后会以导致这种情况的方式重新分配它们问题?这不可能是 DNS 缓存问题,因为 getent hosts 向我显示了该服务的正确集群 IP - 该 IP 无法访问!在我看来,这确实是 Kubernetes 网络设置中的错误。

我应该制造一个问题,还是我做错了什么?

最佳答案

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

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

关于Kubernetes 服务随着时间的推移无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com