微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何仅通过 ingress 访问 kubernetes 应用程序

如何解决如何仅通过 ingress 访问 kubernetes 应用程序

我有一个 kubernetes 对象,如下所示:

  1. 部署
  2. 在步骤 1 中与该部署一起使用的服务
  3. 在步骤 2 中带有后端路径的入口

我在 GCP 中使用 Kubernetes Engine。一旦我创建了一个 ingress 对象,它就会像往常一样创建一个负载均衡器。

所以我有我的 dns,我添加一个 A 记录,域名 test1.<my-domain>.co 指向从 ingress 创建的 LoadBalancer 的 IP

但这行不通。它不会加载页面

然后我尝试安装 ningx 入口控制器,一旦部署,它在 gcp 中创建了另一个负载平衡器。因此,我获得了新创建的负载均衡器的 IP,并切换/更改了用新创建的负载均衡器的 IP 替换 DNS 记录 IP。瞧,它开始工作了。那么这是否意味着 ingress 总是需要入口控制器才能工作?

解决方法

是的,为了让 Ingress 资源正常工作,集群必须有一个 Ingress 控制器在运行。仅创建 Ingress 资源无效。
Ingress 控制器负责完成 Ingress,通常带有负载均衡器,这就是您所看到的。

来自客户端的请求到达 Ingress 管理的负载均衡器,根据原始请求中的主机和路径转发到相应的 Ingress。遵循入口中定义的路由规则,请求被转发到服务,从它在后端 pod 上着陆。

Ingress 资源创建自己的负载均衡器似乎是 GKE 遵循的行为。来自 GCP 文档

当您在资源清单中指定 kind:Ingress 时,您指示 GKE 创建 Ingress 资源。通过包含注释和 支持工作负载和服务,您可以创建自定义 Ingress 控制器。否则,GKE 会进行适当的 Google Cloud API 调用 创建外部 HTTP(S) 负载平衡器。

您可以阅读有关此 here 的更多信息。

,

是的,需要入口控制器来服务来自集群外部的用户请求。 当用户在入口控制器的负载均衡器 IP 上发送请求时,入口控制器从入口资源读取路由并相应地转发用户请求。 入口资源是服务的一部分。意味着对于每个服务,您都需要有入口资源,而入口控制器可以为多个入口资源提供服务。

主要使用了两个入口控制器。

  1. nginx
  2. 轮廓。 您可以阅读有关它们的详细信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。