【问题标题】:Hostname in Ingress yml kubernetes clusterIngress yml kubernetes 集群中的主机名
【发布时间】:2021-10-07 20:11:15
【问题描述】:

我使用的是基础架构团队(不是 minikube)提供的 kubernetes 集群,我已经创建了 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 地址应该是什么。

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

【问题讨论】:

    标签: kubernetes kubectl kubernetes-ingress kubernetes-pod


    【解决方案1】:

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

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

    https://dummy.domain.com:3429

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        更多详情请访问本教程:Run the HAProxy Kubernetes Ingress Controller Outside of Your Kubernetes Cluster

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-14
          • 2020-02-06
          • 2019-12-29
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 2020-06-28
          • 2021-06-05
          相关资源
          最近更新 更多