设置Kubernetes Ingress多个主机

10

我已经设置了两个简单的Kubernetes服务和部署 - 前端和API。前端从API获取数据,因此我也将API公开,以便可以在前端数据获取调用中硬编码后端Ingress URL(如果有人知道更好的在集群内部完成此操作的方法,请告诉我)。

我正在尝试为不同的服务设置不同的主机名,但由于某种原因,只有一个主机名起作用。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-webapp-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: test-webapp-frontend.com
    http:
      paths:
        - path: /
          backend:
            serviceName: test-webapp-frontend-lb
            servicePort: 8002
  - host: test-webapp-api.com
    http:
      paths:
        - path: /get
          backend:
            serviceName: test-webapp-api-lb
            servicePort: 8001

运行kubectl get svc后,我得到了以下结果:

NAME                      TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes                ClusterIP      10.96.0.1        <none>        443/TCP          2d
test-webapp-api-lb        LoadBalancer   10.107.60.163    <pending>     8001:30886/TCP   1h
test-webapp-frontend-lb   LoadBalancer   10.104.100.108   <pending>     8002:31431/TCP   1h

我正在本地使用minikube来运行这个集群。通过运行minikube service test-webapp-frontend-lbminikube service test-webapp-api-lb,我可以访问前端和API。

当我访问test-webapp-frontend.com时,我可以看到前端页面,但是我无法访问test-webapp-api.com,甚至没有默认的未找到错误,就好像这个URL根本不存在一样。

奇怪的是,如果我执行以下操作,

spec:
  rules:
  - host: test-webapp-frontend.com
    http:
      paths:
        - path: /
          backend:
            serviceName: test-webapp-frontend-lb
            servicePort: 8002
  - host: test-another-frontend.com
    http:
      paths:
        - path: /
          backend:
            serviceName: test-webapp-frontend-lb
            servicePort: 8002

我仍然可以访问test-webapp-frontend.com,但test-another-frontend.com有相同的问题,完全不能访问。

我做错了什么?

1个回答

7
似乎是 DNS 问题。那些类似于“test-webapp-frontend.com”的主机名需要解析为入口控制器的 IP,以将流量路由到集群中。我在您的输出中没有看到 ingress controller 的外部 IP。对于 minikube,您可以启用 ingress 插件。DNS 对于 minikube 来说有点棘手,因为您没有公共 IP 可以解析。您可以修改 etc/hosts 文件来解析名称,或者使用基于路径的规则。这里有一些有用的链接:这里这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接