如何修复:数字海洋上 nginx-ingress 的空 IP 地址

How to fix: Empty IP Address for nginx-ingress on digital-ocean

在我的 k8s 集群中,ingress 在数字海洋的 k8s 集群上不起作用。我没有获得外部 ip,因此它不可用。本地好像没问题。

我已经搜索了很多并尝试了一些教程,f.e。 https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes。 但它似乎是一个旧版本,解决方案(甚至链接)不再有效。

nginx-ingress 应该调用 8080 端口的网站后台服务。

我将入口代码简化为以下代码:

kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: website
          servicePort: 8080

kubectl get ing 我看到了入口,但没有地址。看起来像这样

NAME           HOSTS   ADDRESS   PORTS   AGE
test-ingress   *                 80      50s

任何人都可以帮助我并告诉我我必须做什么才能获得我的 k8s 集群 运行?

谢谢 彼得

首先,如果您使用的是 Nginx Ingress Controller,则不需要查看入口地址。

当你安装 Nginx Ingress Controller to your k8s cluster, it creates Load Balancer to handle all incoming requests. Make sure that below part completed as explained in Step 2 of guide 你发布了,你可以看到 LoadBalancer 外部 ip 地址。

$ kubectl get svc --namespace=ingress-nginx

您应该看到一个外部 IP 地址,对应于 DigitalOcean 负载均衡器的 IP 地址:

Output
NAME            TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)                      AGE
ingress-nginx   LoadBalancer   10.245.247.67   203.0.113.0   80:32486/TCP,443:32096/TCP   20h

在上述情况下,在部署入口资源后,如果您点击 http://203.0.113.0,您将获得 website:8080 后端服务。

希望对您有所帮助!