使用 Calico 在 kubernetes 中公开服务的最佳实践

Best Practise to expose service in kubernetes using Calico

已经为一个 ip-per-pod 网络设置了一个带有 calico 的 kubernetes 集群,我想知道将服务暴露给外界的最佳实践是什么。

恕我直言,我在这里有两个选择,BGP 将内部 pod IP(172...)连接到边缘 router/firewall(在我的例子中是 vyos)并在防火墙/路由器上执行 SNAT。但是我需要每个 pod 一个 public IP 来公开。

Pro: 较少public需要使用IP 缺点:Pod 更改需要更新防火墙规则?!

或第 2 步:获取提供的 public 网络并将其作为 IP 池移交给 calico,以供 pods 使用。 缺点:大量 public IP 浪费在不会暴露在互联网上的内部服务上

希望有人能开导我或指出正确的方向。

谢谢!

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

定义网络安全策略

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

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