我有一个托管在VM或Bare Metal中的数据库节点集群,我想创建其他数据库节点(托管在Kubernetes Pods中)并让它们加入现有集群(托管在虚拟机或裸机中的集群)。 / p>
为了让他们加入群集,每个数据库必须能够通过不同的IP和端口解析另一个数据库。在Kubernetes网络环境中,现有的VM托管DB之间没有问题,也没有问题。关键在于我似乎无法看到VM托管的数据库单独路由到每个POD托管的数据库的方法。是否有Kubernetes配置允许我让每个pod / DB在特定端口上单独路由,同时为运行集群的主机共享相同的NIC?我是否需要使用自己的服务来支持每个POD?
以下是我尝试使用概念IP地址空间实现的配置。
答案 0 :(得分:0)
我对类似案例采取的方法是实际上使非kubernetes环境中的节点能够自己与pod进行对话。根据您的网络配置,这可能很容易实现。
在我的情况下,我只需要在需要访问我的k8s内部的VM上运行2个额外的元素: - 法兰绒:这实际上将我的虚拟机绑定到与k8s吊舱操作相同的法兰绒网络 - kube-proxy:使用iptables将服务ips转换为pod ips(在我需要通过服务IP访问的情况下)
如果您可以在网关级别解决此问题(例如,在您的网络门上使用法兰绒/代理并使用某些SNAT规则对其进行补充),您可以避免在虚拟机或其主机上进行此设置。
如果您的数据库坚持使用您提供的IP,那么每个in-k8s数据库中的NodePort / LB服务可能会起作用(不仅仅用于发现引导,后来IP被DB的实际IP替换 - iirc mongo通常会做类似的事情那)