Ingress yml kubernetes 集群中的主机名

Hostname in Ingress yml kubernetes cluster

我正在使用 infra 团队提供的 kubernetes 集群(不是 minikube),我创建了带有所有配置的 traefik 入口控制器,入口容器,我们的应用程序在集群中 运行。现在我想使用域名或IP地址访问应用程序,为此,我创建了一个Ingress资源如下

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  rules:
  - host: dummy.domain.com
    http:
     paths:
     - path: /
      backend:
         serviceName: app-web-ui
         servicePort: web

我在这里没有得到的是主机名,因为应用程序在集群中 运行,这个主机名应该是集群主节点名吗?实际产品环境中的主机名或IP地址应该是什么。

注意:我们没有使用任何云提供商,它只是简单的 docker 与 kubernetes 集群环境(集群在 Mirantis kubernetes 中配置,客户端是 Windows)。

Ingress 对象将入口控制器配置为将 dummy.domain.com 的任何请求路由到您刚刚部署的应用程序。您需要更新主机上的 /etc/hosts 文件以将 dummy.domain.com 映射到入口控制器 VM 的 IP 地址例如2192.168.50.212,这个地址就是master ip地址。

有关详细信息,请访问本教程:Run the HAProxy Kubernetes Ingress Controller Outside of Your Kubernetes Cluster

如果您在入口后面使用任何负载均衡器或任何带有负载均衡器的入口控制器,您必须在所有地方使用负载均衡器 IP。

因此您必须将 Loadbalancer IP 映射到 dummy.domain.comDNS,否则如果您不使用负载平衡器,则必须使用主 IP。

您正在从 local machine 进行测试,您可以在 etc/host 文件中添加 domain 和 IP 条目并检查。

我能够通过从 Infra 团队请求新域名(dns 条目)来解决这个问题,对于这个域名我已经映射了集群的主节点 IP 地址,我们有 3 个管理节点,所以我有将域名(dummy.domain.com)映射到3个管理节点的IP地址。

在此之后,我能够使用 DNS 名称和节点端口访问应用程序(节点端口在 app-web-ui 应用程序的 service.yml 中提到)。

https://dummy.domain.com:3429