尽管 DNS 级别的 IP 相同,但 GKE 中的 Ingress 不会执行相同的路由

尽管 DNS 级别的 IP 相同,但 GKE 中的 Ingress 不会执行相同的路由

我在 GKE 集群中设置了一个 nginx 入口,如下所示:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx --namespace nginx-ingress

一个具有其 IP 的负载均衡器出现了。

现在我在 Cloudflare 添加了两个指向该域的 DNS:

在此处输入图片描述

另外我创建了一个命名空间app-a

kubectl create namespace app-a
kubectl label namespace app-a project=a

并在那里部署了一个应用程序:

apiVersion: v1
kind: Service
metadata:
  name: echo1
  namespace: app-a
spec:
  ports:
  - port: 80
    targetPort: 5678
  selector:
    app: echo1
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo1
  namespace: app-a
spec:
  selector:
    matchLabels:
      app: echo1
  replicas: 2
  template:
    metadata:
      labels:
        app: echo1
    spec:
      containers:
      - name: echo1
        image: hashicorp/http-echo
        args:
        - "-text=echo1"
        ports:
        - containerPort: 5678
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: echo-ingress-global
  namespace: app-a
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: "test.my-domain.com"
    http:
        paths:
        - pathType: Prefix
          path: "/"
          backend:
            service:
              name: echo1
              port:
                number: 80

在 Lens 中一切看起来都很好,所以我想测试一下。

当我进入时eu1.my-domain.com,我得到了

在此处输入图片描述

这当然是有意为之。

但是当我输入时test.my-domain.com,我发现该网站无法访问:DNS_PROBE_FINISHED_NXDOMAIN,尽管我希望看到虚拟应用程序的虚拟输出。

更奇怪的是,无论我得到响应良好或无响应的结果,在 nginx 控制器的日志中,任何调用都不会显示任何内容。

你能帮助我,让我可以访问test.my-domain.com主页吗?

答案1

由于我没有足够的声誉来评论您的帖子,因此将其作为答案发布。

域名“my-domain.com”是公开注册的域名。在执行域名查找,显示的公共 IP 地址与您提供的屏幕截图中的 Cloudflare 公共 IP 不匹配。假设您有自己的注册域名,可将其用作 service.yaml 上的主机,以成功运行您的 GKE Web 应用。

你可以参考这个文档关于在 GKE 集群中使用域名。

相关内容