首页 文章

Kubernetes,无法访问公开的服务

提问于
浏览
-1

Kubernetes version: v1.10.3

Docker version: 17.03.2-ce

Operating system and kernel: Centos 7

Steps to Reproduce: https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/

Results:

[root @ rd07 rd] #kubectl描述服务example-service

名称:示例服务
命名空间:默认
标签:run = load-balancer-example
注释:
选择器:run = load-balancer-example
类型:NodePort
IP:10.108.214.162
端口:9090 / TCP
TargetPort:9090 / TCP
NodePort:31105 / TCP
终点:192.168.1.23:9090,192.168.1.24:9090
会话亲和力:无
外部交通政策:集群
事件:

Expected:

期望能够卷曲kubernetes服务中定义的集群ip

我不确定哪个是所谓的“public-node-ip”,所以我尝试了每个相关的ip地址,只有当使用master ip作为“public-node-ip”时才会显示“No route to host” .

我用“netstat”来检查 endpoints 是否被监听 .

我试着用“https://github.com/rancher/rancher/issues/6139”冲洗我的iptables,但根本没用 .

我试过“https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/ ", " nslookup hostnames.default”无效 .

服务似乎工作得很好,但服务仍然无法访问 .

我正在使用“calico”和“法兰绒”也尝试过 .

我尝试了很多应用服务的教程,但都无法访问 .

我是kubernetes的新手,如果有人能帮助我的话 .

2 回答

  • 1

    如果您在任何公共 Cloud 上,则不应在 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: {}
    

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

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

    希望这可能有所帮助 .

    谢谢!

  • 0

    我的k8s群集是1个主节点和1个节点 .
    服务pod正在节点上运行 .
    所以我使用了http://nodeip:31105,它显示了"Hello Kubernetes!" .
    http://masterip:31105仍然无法正常工作,它是否正确?
    我检查了 endpoints 监听,31105是高手听的 .

相关问题