【问题标题】:Best Practise to expose service in kubernetes using Calico使用 Calico 在 Kubernetes 中公开服务的最佳实践
【发布时间】:2016-12-02 22:45:48
【问题描述】:

在使用 calico 为每 pod 一个 ip 的网络设置了一个 kubernetes 集群后,我想知道将服务公开给外部世界的最佳做法是什么。

恕我直言,我在这里有两个选项,将内部 pod IP (172...) BGP 连接到边缘路由器/防火墙(在我的情况下为 vyos)并在防火墙/路由器上执行 SNAT。但是我需要每个 pod 有一个公共 IP 才能公开。

专业版:需要使用的公共 IP 更少 缺点:Pod 更改需要更新防火墙规则?!

或第二个:将提供的公共网络作为 IP 池交给 calico,供 Pod 使用。 缺点:大量公共 IP 被浪费在不会暴露在互联网上的内部服务上

希望有人能启发我或指出正确的方向。

谢谢!

【问题讨论】:

    标签: networking kubernetes nat project-calico


    【解决方案1】:

    Calico 没有提供任何特殊方式在 Kubernetes 中公开服务。您应该使用标准的 Kubernetes 服务、节点端口等来公开您的服务。未来,Calico 有可能提供 kube-proxy 目前为 Kubernetes 提供的一些功能(例如公开服务 IP),但目前,Calico 仅适用于低级网络 API 层。 Calico 在 Kubernetes 集成中的真正优势在于能够使用新的 Kubernetes NetworkPolicy API 定义网络安全策略。

    来源:我是 Calico 的核心开发人员之一。

    【讨论】:

    • 您好 Fasaxc,首先,感谢您的回答和您在 calico 上所做的工作,我认为这是一个很棒的项目。我的问题源于我在 CoreOS Fest '15 的视频中看到的内容,Spike Curtis 说您可以将 Calico 直接连接到您的基础架构,以宣传数据中心外的路由,让人们直接连接。这让我想知道它会如何正确完成。查看Video at 13:05
    • 如果您运行的是 OpenStack 或原始 Docker,那么您将只有一组 IP,这些 IP 将被公开。不同之处在于 Kubernetes 有它的服务基础设施,它位于 Pod IP 的前面。我们还没有从 Kubernetes 那里“接管”这个特性并“Calico 化”它(还),但我们将来可能会这样做。现在,如果你想要 k8s 体验、服务 IP 等,那么你需要在 Calico 前面运行 kube-proxy。
    • @Fasaxc 为什么我在使用 calico 和 kubernetes 1.7 时无法使用 ipBlock?
    • 我找到了这篇文章here,它似乎建议使用calico 的设置来使用calico 公开kubernetes 资源(可能不是服务)。有 ipv6 支持会很棒。
    【解决方案2】:

    Calico 不负责 k8s 服务 IP 管理或将服务 ip 转换为容器(工作负载端点)它为新创建的 pod 分配 IP 地址并进行必要的系统配置更改以实施 calico 策略

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多