具有主机名的Kube入口(如何知道IP以转发域名?)

时间:2019-03-10 12:57:02

标签: kubernetes ip-address google-kubernetes-engine hostname nginx-ingress

我看到诸如this之类的指南,其中设置Nginx Ingress(使用ssl)需要您输入主机,即echo1.example.com。如果您没有IP地址(在您的DNS中,您将如何知道要echo.example.com的位置,我不知道如何使用指定的主机。)

当我这样设置一个入口时,echo.example.com会显示为入口ADDRESS,所以我不知道IP。如果我未指定,则ADDRESS只是空的。这样,我应该如何知道我要指向我的域名的IP?

我正在GKE上运行。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-ingress
  annotations:  
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-staging
spec:
  tls:
  - hosts:
    - echo1.example.com
    - echo2.example.com
    secretName: letsencrypt-staging
  rules:
  - host: echo1.example.com
    http:
      paths:
      - backend:
          serviceName: echo1
          servicePort: 80
  - host: echo2.example.com
    http:
      paths:
      - backend:
          serviceName: echo2
          servicePort: 80

2 个答案:

答案 0 :(得分:1)

您无法指定将由GKE分配的IP地址。 IP是从Google的IP模块自动分配的。

您必须创建Ingress资源,等待IP分配完毕,然后将IP添加到DNS中。

如果您要自动创建一个指向您的Ingress IP的正确DNS条目,则应查看以下内容:https://github.com/kubernetes-incubator/external-dns

答案 1 :(得分:0)

您的Kubernetes节点的IP应该被认为是短暂的。请勿在主机名上指​​向主机名,以用于托管网站和服务。

  1. Reserve an external static IP address
  2. 在端口80和443上创建一个负载均衡器。如果希望负载均衡器处理TLS,请使用HTTPS。如果您希望nginx处理TLS,请使用TCP
  3. 负载均衡器上的
  4. Configure Target Pools指向正确的nginx入口端口上的K8s节点池
  5. 将群集服务的所有主机名指向外部静态IP地址