【问题标题】:Is it possible to join a hardware in the same subnet with Kubernetes pods?是否可以将硬件与 Kubernetes pod 连接到同一子网中?
【发布时间】:2018-01-23 01:08:09
【问题描述】:
我已经在裸机上设置了一个带有法兰绒网络的 Kubernetes 集群。我在集群中部署并运行了一项服务。该服务将广播以发现同一子网中的其他终端设备。
问题在于接收广播的客户端代理在资源受限的硬件上运行。这些设备与主节点和工作节点在同一子网中运行。 Pod 中部署的服务(网络掩码:10.244.0.0/16)无法发现在主机操作系统子网(网络掩码:192.168.0.0/24)中运行的客户端。如何加入 Pod 子网中的客户端?
感谢任何帮助。
【问题讨论】:
标签:
networking
kubernetes
【解决方案1】:
问题在于它们实际上位于不同的子网中:pod 网络和裸机网络。因此,您必须检查哪些选项可用于不同子网之间的服务发现。一些人建议使用跟踪器(就像 P2P 网络一样)https://serverfault.com/a/304344/380575。
您也可以尝试将外部服务/端点添加到在集群外运行的服务中,但我不确定这是否可行。
底线:如果您需要其他子网中的服务,您可以使用跟踪器或为它们创建静态端点。
【解决方案2】:
我最终通过在 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