K8S nginx能正常运行,但是 curl 访问 Connection refused,怎么解决?

K8S nginx能正常运行,但是 curl 访问 Connection refused,怎么解决?

centos7.5 k8s 一个k8s-master,两个节点:k8s-slave1, k8s-slave2


# master执行:
$ kubectl run test-nginx --image=nginx:alpine
$ kubectl get po -o wide
# 能正常运行
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-nginx-5bd8859b98-qvks5 1/1 Running 0 29s 172.17.0.2 k8s-slave2  

$ curl 172.17.0.2
curl: (7) Failed connect to 172.17.0.2:80; Connection refused
# 但是k8s-slave2节点,$ curl 172.17.0.2是能通的,但是在master和别的节点上就curl不通。

[root@k8s-slave2 ~]# curl 192.169.165.181:30960

curl: (7) Failed connect to 192.169.165.181:30960; Connection refused
[root@k8s-slave2 ~]# 
[root@k8s-slave2 ~]# curl 172.17.0.2



Thank you for using nginx.

[root@k8s-master ~]# curl 172.17.0.2 curl: (7) Failed connect to 172.17.0.2:80; Connection refused [root@k8s-master ~]# ping 172.17.0.2 PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data. 64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.096 ms 64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.037 ms [root@k8s-slave1 ~]# curl 172.17.0.2 curl: (7) Failed connect to 172.17.0.2:80; No route to host # 三台机器的防火墙都是ACCEPT,没有问题: iptables -L -n Chain FORWARD (policy ACCEPT) # 网络也是好的: [root@k8s-master ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.165.2 0.0.0.0 UG 0 0 0 ens33 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.165.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 # 所有节点都是ready状态,镜像都已经安装了 [root@k8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready master 10h v1.16.2 k8s-slave1 Ready 10h v1.16.2 k8s-slave2 Ready 10h v1.16.2 [root@k8s-master ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-58cc8c89f4-29t99 1/1 Running 1 10h coredns-58cc8c89f4-nkbqf 1/1 Running 1 10h etcd-k8s-master 1/1 Running 1 10h kube-apiserver-k8s-master 1/1 Running 1 10h kube-controller-manager-k8s-master 1/1 Running 1 10h kube-proxy-6dvpv 1/1 Running 2 10h kube-proxy-6mbrd 1/1 Running 1 10h kube-proxy-9cwrv 1/1 Running 1 10h kube-scheduler-k8s-master 1/1 Running 1 10h

我交流学习k8s
可以加我微信:wqm701,也可以把我拉到运维群里,一起学习

参考GPT和自己的思路:从您提供的情况来看,K8S nginx能够正常运行,但是curl访问时出现Connection Refused错误。这很可能是因为Kubernetes集群中的某些网络配置问题导致的。

为了排除问题,您可以尝试以下步骤:

  1. 确认访问的IP地址是否正确。 确保您使用的IP地址与运行nginx的Pod的IP地址相同。
  2. 确认iptables设置是否正确。 检查iptables是否正确配置,例如是否有正确的NAT规则来转发到Pod IP。
  3. 检查Pod是否具有正确的标签与服务匹配。 确认您的nginx Pod是否具有正确的标签,并且该标签匹配您的Kubernetes服务配置。
  4. 检查服务是否正确。检查您的服务是否正确创建,并在正确的端口上公开了Nginx Pod。
  5. 确认kube-proxy是否正常工作。kube-proxy是Kubernetes内置的网络代理,负责转发访问到正确的Pod。检查kube-proxy是否正在运行,并且没有错误。
  6. 检查网络插件是否正确。 确认您正在使用的网络插件是否正确配置,并且未出现任何问题。

如果您还没有解决问题,请检查Kubernetes节点和Pod之间的网络连接是否工作正常。如果没有,则可能需要对Kubernetes集群进行进一步调查和诊断,例如使用kubectl describe命令查看Pod和服务状态,使用kubectl logs命令获取日志等。

另外,建议您加入Kubernetes社区或者参考Kubernetes官方文档进一步了解和学习Kubernetes。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/670361
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:kubectl nginx error debug
  • 除此之外, 这篇博客: k8s部署应用nginx中的 1. 写在前面:自己的k8s集群信息 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    • 共两台linux,master为集群管理角色,worker为集群实际工作角色
    • master:192.168.192.131
    • worker:192.168.192.131、192.168.192.132

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

有装flanneld吗? 看你的节点路由好像少东西

你好,我也遇到相同问题,请问如何处理的,防火墙和nginx都没有问题
#master节点,不通

curl 10.96.99.118:8000

curl: (7) Failed connect to 10.96.99.118:8000; Connection refused
[root@node1 k8s]# telnet 10.96.79.119 8000
Trying 10.96.79.119...

#工作节点可以通

curl 10.96.79.119:8000

222