首页 文章

K8 Ingress没有 endpoints

提问于
浏览
0

我想使用入口控制器从K8集群外部访问服务 . 在Kubernetes Cookbook的5.5之后,我运行了这个清单:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: nginx-public
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host:
    http:
      paths:
      - path: /web
        backend:
          serviceName: nginx
          servicePort: 80

Ingress对象在Kubernetes仪表板中可见;但它没有指定的 endpoints :

enter image description here

输出 kubectl get ing

NAME           HOSTS     ADDRESS   PORTS     AGE
nginx-public   *                   80        54m

update

运行 kubectl describe ingress nginx-public 给出:

Name:             nginx-public
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *
        /web   nginx:80 (<none>)
Annotations:
  ingress.kubernetes.io/rewrite-target:  /
Events:                                  <none>

1 回答

  • 1

    实际上这是Kubernetes Dashboard的一个问题,我们也有同样的问题 .

    即使它没有显示,也不代表你的入口不起作用 . 首先,您应该使用kubectl(kubectl describe ingress nginx-public)检查入口,并验证输出是否熟悉:

    Name:             test-ingress
    Namespace:        test
    Address:          
    Default backend:  default-http-backend:80 (<none>)
    TLS:
      test-ssl-secret terminates test.myorg.com
    Rules:
      Host                      Path  Backends
      ----                      ----  --------
      test.myorg.com  
                                /   test-service:80 (<none>)
    

    之后,您应该通过指定的主机验证您的服务是否可以访问 .

    Update:

    根据入口控制器前面的服务,您的服务应该可以通过http:// / web访问,以防您的服务类型为NodePort(您将获得2个外部端口)如果服务类型为LoadBalancer,则30000-39999范围,一个是http端口,另一个是https端口)或http:// / web .

    2nd-Update

    经过对该问题的进一步调查后,我偶然发现了一个kubernetes-dashboard,表明它是由仪表板引起的,但是在入口部署中缺少一个参数 .

    对于nginx-ingress-controller,其内容如下:

    NGINX Ingress CLI arguments

    缺少的选项是--publish-service如果您使用helm来部署控制器,则需要添加参数--set controller.publishService.enabled = true

相关问题