【问题标题】:Kubernetes, Cannot access exposed servicesKubernetes,无法访问暴露的服务
【发布时间】:2018-11-21 15:37:00
【问题描述】:

Kubernetes 版本: v1.10.3

Docker 版本: 17.03.2-ce

操作系统和内核: Centos 7

复制步骤: https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/

结果:

[root@rd07 rd]# kubectl describe services example-service

名称:示例服务
命名空间:默认
标签:run=load-balancer-example
注释:
选择器:run=load-balancer-example
类型:NodePort
IP:10.108.214.162
端口:9090/TCP
目标端口:9090/TCP
节点端口:31105/TCP
端点:192.168.1.23:9090,192.168.1.24:9090
会话相关性:无
外部流量策略:集群
事件:

预期:

期望能够curl在kubernetes服务中定义的集群ip

我不确定哪个是所谓的“公共节点IP”,所以我尝试了每个相关的IP地址,只有当使用主IP作为“公共节点IP”时它显示“没有路由主持”。

我使用“netstat”来检查端点是否被监听。

我尝试使用“https://github.com/rancher/rancher/issues/6139”刷新我的 iptables,但它根本不起作用。

我试过“https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/”,“nslookup hostnames.default”不起作用。

服务似乎运行良好,但仍然无法访问服务。

我用的是“印花布”,也试过“法兰绒”。

试了很多应用服务的教程,都无法访问。

我是 kubernetes 的新手,如果有人可以帮助我,请告诉我。

【问题讨论】:

  • 您是否尝试通过 curl 负载均衡器 IP 连接到您的节点?
  • 是的,卡在步骤“curl http://:
  • 你的负载均衡器暴露在 9090 并且你的负载均衡器 ip 是 10.108.214.162。你应该卷曲 10.108.214.162:9090
  • 它说没有路由到主机。 [root@rd07 rd]# curl 10.108.214.162:9090 curl: (7) 连接到 10.108.214.162:9090 失败;没有路由到主机。

标签: kubernetes


【解决方案1】:

我的 k8s 集群是 1 个主节点和 1 个节点。
服务 pod 正在节点上运行。
所以我使用了http://nodeip:31105,它显示“Hello Kubernetes!”。
但是http://masterip:31105 还是不行,是不是应该是对的?
我检查了端点监听,31105在master上监听。

【讨论】:

    【解决方案2】:

    如果您在任何公共云上,您不应该通过ip a 命令获取公共 IP 地址。但是即使端口会暴露给0.0.0.0:31105

    这是您可以验证配置的示例文件:

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        k8s-app: app-name
      name: bss
      namespace: default
    spec:
      externalIPs:
      - 172.16.2.2
      - 172.16.2.3
      - 172.16.2.4
      externalTrafficPolicy: Cluster
      ports:
      - port: 9090
        protocol: TCP
        targetPort: 9090
      selector:
        k8s-app: bss
      sessionAffinity: ClientIP
      type: LoadBalancer
    status:
      loadBalancer: {}
    

    只需将您的<private-ip> 替换为externalIPs: 并使用您的节点端口卷曲您的公共IP。

    如果您使用任何云部署应用程序,还要验证来自云安全组/防火墙的配置以打开端口。

    希望这会有所帮助。

    谢谢!

    【讨论】:

    • 非常感谢您的回答。我想知道如果没有 iptables,kubernetes 是否无法工作。因为我停止了 firewalld 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2021-08-13
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多