K8 Ingress没有端点

时间:2018-07-23 13:02:24

标签: azure kubernetes kubernetes-ingress

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

LinearLayout

Ingress对象在Kubernetes仪表板中可见;但它没有分配的端点:

enter image description here

def pyAC(x, npoints = 10, RetType='abs'): x = np.sort(x) ksort = np.argsort(x) binCount = int(len(x)/npoints) #number of data points in each bin bins = np.zeros(npoints) #initialize the bins values binsX = np.zeros(npoints) for i in range(0, npoints, 1): bins[i] = x[(i+1) * binCount] for j in range(((binCount * i) + 1), (binCount * (i+1)), 1): binsX[i] = x[j] + binsX[i] binsX = binsX/binCount return pd.DataFrame({'bins':bins, 'binsX':binsX}) 的输出:

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

更新

运行kubectl get ing给出:

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

1 个答案:

答案 0 :(得分:1)

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

即使未显示,也不表示您的入口无法正常工作。首先,您应该使用kubectl检查入口(kubectl描述入口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>)

此后,您应该确认您的服务可以通过指定的主机访问。

更新

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

第二次更新

在对该问题进行了进一步调查之后,我偶然发现了bug issue的kubernetes-dashboard,指出确实有可能显示入口的端点。问题实际上不是由仪表板引起的,而是入口部署中缺少参数。

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

NGINX Ingress CLI arguments

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