【问题标题】:K8 Ingress does not have an endpointK8 Ingress 没有端点
【发布时间】:2023-03-05 03:27:02
【问题描述】:

我想使用入口控制器从 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 仪表板中可见;但它没有指定的端点:

kubectl get ing 的输出:

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

更新

运行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>

【问题讨论】:

  • 您正在运行哪个入口控制器?您在哪个平台/云提供商上运行?
  • 你可以查看 nginx-ingress-controller 的日志,看入口是否被它处理。
  • 它是在azure vm上手动安装的;我如何检查入口控制器,它不是在 yaml 中说明的吗?如何查看 nginx-ingress-controller 的日志?
  • @API 检查我的回答 pease 的更新。

标签: azure kubernetes kubernetes-ingress


【解决方案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>)

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

更新:

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

第二次更新

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

对于 nginx-ingress-controller 如下:

NGINX Ingress CLI arguments

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2020-05-09
    • 2018-09-25
    • 1970-01-01
    • 2021-01-18
    相关资源
    最近更新 更多