networking - 使用 Calico 在 Kubernetes 中公开服务的最佳实践

标签 networking kubernetes nat project-calico

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

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

优点:需要使用的公共(public) IP 更少
缺点:Pod 更改需要更新防火墙规则?!

或者 2nd: 将提供的公共(public)网络作为 IP 池交给 calico 用于 Pod。
缺点:大量公共(public) IP 被浪费在不会暴露在互联网上的内部服务上

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

谢谢!

最佳答案

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

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

关于networking - 使用 Calico 在 Kubernetes 中公开服务的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38638106/

相关文章:

c# - 在异步函数中使用异步?

ubuntu - 通过软件服务访问 NAT 路由器后面的 Ubuntu PC

linux - Rook和Ceph在Kubernetes上

node.js - 无法将 UDP 发送回 NAT 后面的内部 PC

scala - 互联网上的 Akka-remote

sockets - 在 golang 中创建 TCP 客户端

Python - Pip 安装 - 代理错误 - 'Cannot connect to proxy.',OSError'

google-app-engine - 我想要一个 “forwards”到两个开发服务器的代理服务器

kubernetes - 如何将请求分发到 Kubernetes 服务上的 Pod

kubernetes - Istio部署未发生