为one-ip-per-pod网络建立了一个带有calico的kubernetes集群,我想知道将服务暴露给外界的最佳做法是什么。
恕我直言,我有两个选择,BGP将内部pod IP(172 ...)连接到边缘路由器/防火墙(在我的情况下是vyos),并在防火墙/路由器上执行SNAT。但是,我需要每个pod提供一个公共IP才能公开。
Pro:需要使用较少的公共IP Con:Pod更改需要更新firwall规则?!
或第二:将提供的公共网络交给calico作为用于pod的IP池。 骗局:许多公共IP浪费在内部服务上,不会暴露在互联网上
希望有人能够启发我或指出我正确的方向。
谢谢!
答案 0 :(得分:1)
Calico没有提供任何特殊方式来揭露Kubernetes中的服务。您应该使用标准Kubernetes服务,节点端口等来公开您的服务。在未来,Calico可能会提供kube-proxy目前为Kubernetes所做的一些功能(例如暴露服务IP),但目前,Calico只适用于低级网络API层。 Calico在Kubernetes集成方面的真正优势在于能够使用新的Kubernetes NetworkPolicy API定义网络安全策略。
消息来源:我是Calico的核心开发人员之一。
答案 1 :(得分:0)
Calico不负责k8s服务IP管理或将服务ip转换为容器(工作负载端点),它为新创建的Pod分配IP地址,并进行必要的系统配置更改以实施calico策略