我已经在裸机上设置了一个带法兰绒网络的Kubernetes集群。我在群集中部署并运行了一项服务。该服务将广播以发现同一子网中的其他终端设备。
问题是接收广播的客户端代理正在资源受限的硬件上运行。这些设备与主节点和工作节点在同一子网中运行。 pod中的已部署服务(网络掩码:10.244.0.0/16)无法发现在Host OS子网中运行的客户端(网络掩码:192.168.0.0/24)。如何加入pods中的客户端'子网?
任何帮助都表示赞赏。
答案 0 :(得分:0)
问题在于它们实际上位于不同的子网中:pod网络和裸机网络。因此,您必须检查不同子网之间可用于服务发现的选项。一些人建议使用跟踪器(就像P2P网络一样工作)https://serverfault.com/a/304344/380575。
您还可以尝试将外部服务/端点添加到群集外部运行的服务,但我很不确定这是否可行。
底线:如果您需要其他子网中的服务,您可以使用跟踪器或为其创建静态端点。
答案 1 :(得分:0)
我最终通过在pod配置中添加hostNetwork: true
使主机和pod在同一子网中运行。在这种情况下,容器正在使用主机网络。灵感来自here
配置如下:
apiVersion: v1
kind: ReplicationController
metadata:
name: worker
namespace: default
spec:
replicas: 4
selector:
name: worker
template:
metadata:
labels:
name: worker
spec:
hostNetwork: true
containers:
- image: 10.0.0.1:5000/worker
name: worker
imagePullPolicy: IfNotPresent