【问题标题】:Kubernetes Ingress vs. Service with externalIPsKubernetes Ingress 与具有外部 IP 的服务
【发布时间】:2019-01-25 14:52:14
【问题描述】:

如果我在(小型)Kubernetes 1.13 集群上公开(单个)Web 服务(比如 http://a.b.c.dhttps://a.b.c.d),那么使用 Ingress 而不是 Service 类型的 ClusterIP 有什么好处externalIPs [ a.b.c.d ] 一个人?

地址a.b.c.d 被路由到我的集群节点之一。 Ingress 需要安装和维护 ingress controller,所以我想知道这是否合理。

【问题讨论】:

  • Ingress 为您提供了一个进入集群的入口点,但允许您访问在 ingress 定义中公开的多个服务,而如果您必须在不使用入口的情况下公开多个服务,您将不得不管理/分别记住他们所有的外部IP。入口控制器还在您的服务之上扩展 L4/L7 功能,例如 TLS、同时/黑名单 IP 等。
  • @PoweredByOrange 在我当前的(简单)设置​​中,我将a.b.c.d 等地址配置为集群节点的辅助IP 地址;所以在必要的程度上,无论如何我都必须管理/记住它们。

标签: kubernetes kubernetes-ingress


【解决方案1】:
  • 每个 ClusterIP 类型的服务都有自己的公共 IP 地址,而 Ingress 只需要一个 IP,即使您想提供对数十个服务的访问。
  • 您还可以根据 Ingress 提供的基于主机和基于路径的路由将客户端请求转发到相应的服务。
  • 由于 Ingress 在第 7 层(应用层)运行,因此它还可以提供基于 cookie 的会话等功能,这是通过服务无法实现的。

【讨论】:

  • 对于基于主机的路由(例如虚拟主机a.b.c.da.b.c.e),它可能还需要多个 IP 地址,对吧? 7 级功能有助于将服务复制到多个 pod,对吗?仍在尝试了解权衡取舍。
  • 这完全取决于您要实现的用例。它可能适合您的用例,也可能不适合。
【解决方案2】:

我现在遇到了第一个具体示例,我看到使用Ingress 比使用ServiceexternalIPs 带来的具体好处。

Kubernetes 集群内的私有 Docker 注册表通常需要 TLS 凭据。使用 Docker 映像 registry:2 必须安装这些凭据,例如从ConfigMap 进入容器,并让容器中的某些环境变量(例如REGISTRY_HTTP_TLS_CERTIFICATE)指向它们。

只要可以容忍对集群内注册表的不安全访问,使用Ingress 就可以更轻松地进行管理。证书可以放入SecretIngress 资源可以指向 (kubectl explain ingress.spec.tls.secretName)。不再需要对挂载或环境变量进行替代的详细关注。 TLS 连接将在入口控制器处终止。

【讨论】:

    猜你喜欢
    • 2018-11-14
    • 2018-08-27
    • 2017-10-21
    • 2021-07-21
    • 1970-01-01
    • 2019-05-13
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多