如何解决:数字海洋上nginx-ingress的IP地址为空

时间:2019-05-26 14:40:29

标签: kubernetes digital-ocean

在我的k8s集群中,入口不适用于数字海洋的k8s集群。我没有外部IP,因此无法使用。在本地似乎没有问题。

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

nginx入口方应调用端口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集群运行吗?

谢谢 彼得

1 个答案:

答案 0 :(得分:0)

首先,如果您使用的是Nginx入口控制器,则无需查看入口地址。

在将Nginx Ingress Controller安装到k8s集群时,它将创建Load Balancer来处理所有传入的请求。确保按照您发布的guide步骤2 中的说明完成下面的部分,并且能够看到LoadBalancer外部IP地址。

createItem(): FormGroup {
  return this.formBuilder.group({
    name: '',
    description: '',
    price: ''
  });
}

addItem(): void {
  this.items = this.orderForm.get('items') as FormArray;
  this.items.push(this.createItem());
}

您应该看到一个与DigitalOcean Load Balancer的IP地址相对应的外部IP地址:

$ kubectl get svc --namespace=ingress-nginx

在上述情况下,部署入口资源后,如果您点击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后端服务。

希望有帮助!