首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenShift和hostnetwork=true

OpenShift和hostnetwork=true
EN

Stack Overflow用户
提问于 2017-10-14 05:17:01
回答 3查看 1.9K关注 0票数 5

我部署了两个POD-s,将hostnetwork设置为true。当POD-s部署在同一个OpenShfit节点上时,一切工作正常,因为它们可以使用节点IP发现对方。

当POD-s部署在不同的OpenShift节点上时,它们无法发现彼此,如果我想使用节点IP将一个POD指向另一个,则无法获得到主机的路由。如何解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2020-08-07 12:05:18

uswitch/kiam (https://github.com/uswitch/kiam)服务就是一个很好的用例示例。

它有一个在所有工作节点的主机网络上运行的代理进程,因为它修改了防火墙规则,以拦截对AWS api的API请求(来自主机上运行的容器)。

它还具有在主机网络上运行以访问AWS api的服务器进程,因为AWS api位于仅对主机网络可用的子网上。

终于..。代理使用GRPC与服务器通信,GRPC直接连接到查找kiam-server时返回的IP地址之一。

因此,代理部署的pod在节点A的主机网络上运行,试图连接到在节点B的主机网络上运行的kiam服务器。这是行不通的。

此外,这是一项私人服务。它不应从网络外部访问。

票数 1
EN

Stack Overflow用户

发布于 2017-10-23 08:44:51

如果您希望这两个容器共享同一物理机器并利用环回进行快速通信,那么您最好将它们一起定义为包含两个容器单个Pod。

如果这两个容器打算漂浮在一个更大的集群上,并且是更松散耦合的,那么我建议利用Kubernetes中的服务构造(在OpenShift下),并使用它进行适当的发现。

服务记录在https://kubernetes.io/docs/concepts/services-networking/service/上,与内部DNS服务(如果实现的话--在Kubernetes1.4及更高版本中很常见)一起,它们提供了一种让Kubernetes管理东西所在位置的方法,以<servicename>.<namespace>.svc.cluster.local的形式更新内部DNS条目。因此,例如,如果您在默认名称空间中设置了一个具有名为"backend“的服务的Pod,则另一个Pod可以将其引用为backend.default.svc.cluster.local。关于DNS部分的Kubernetes文档可以在https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/上找到。

这也避免了"hostnetwork=true“的复杂性,并让OpenShift (或具体地说是Kubernetes)管理网络。

票数 0
EN

Stack Overflow用户

发布于 2017-10-24 19:36:36

如果您必须绝对使用hostnetwork,则应该创建路由器,然后使用这些路由器在pod之间进行通信。您可以在opeshift中创建基于ha代理的路由器,参考此处--https://docs.openshift.com/enterprise/3.0/install_config/install/deploy_router.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46738150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档