【发布时间】:2017-10-13 21:17:01
【问题描述】:
我已经部署了两个 POD-s,并将 hostnetwork 设置为 true。当 POD-s 部署在同一个 OpenShfit 节点上时,一切正常,因为它们可以使用节点 IP 发现彼此。
当 POD-s 部署在不同的 OpenShift 节点上时,它们无法相互发现,如果我想使用节点 IP 将一个 POD 指向另一个 POD,我将无法获得到主机的路由。如何解决这个问题?
【问题讨论】:
-
为什么首先需要将hostnetwork设置为true?默认情况下,同一项目中的任何 pod 都应该能够与同一项目中的任何其他 pod 通信,即使在不同的节点上也是如此。这是因为每个 pod 都有自己的 IP 地址,并且会设置访问权限以允许连接。
-
您真的不应该使用节点 IP 作为其他 pod 的寻址机制。使用 pod 的名称作为主机名,或者更好地使用服务名称作为主机名,并信任内部路由将其发送到该服务的其中一个 pod。 IOW,无论如何都不需要使用 IP,因为有一个内部 DNS 可以为您将 pod 名称和服务名称映射到 IP。
-
@Graham Dumpleton 我需要使用主机网络进行 REDIS 集群设置。 REDIS 需要它才能在 Docker 上工作。这就是他们在官方 REDIS 集群文档中所说的内容。
-
什么是文档链接?在普通 docker 中运行的东西将不同于在 OpenShift/Kubernetes 下运行。如果端口分配已知,则不需要启用主机网络。
-
如果您在 Google 上搜索“redis cluster kubernetes”,您还会找到各种示例。我建议查看与在 Kubernetes 中运行它相关的东西,而不是尝试根据在普通 docker 主机服务中的运行方式来解决它。通常,官方的 docker 镜像不是按照最佳实践构建的,并且不会在具有更严格安全性的容器环境中运行。
标签: kubernetes openshift redhat