我正在尝试运行一个p2p客户端(IOTA),它要求我连接的节点能够连接回我在同一个IP地址,我发出请求来自一个非常特定的端口。
NodePort无法正常工作,因为它暴露为一个不同的端口然后我想要的。 LoadBalancer不起作用,因为另一个节点不知道我的负载均衡器IP地址。
人们如何在kubernetes上使用比特币或iota等p2p客户端?
答案 0 :(得分:0)
因为每个pod都有一个动态IP地址,通常是一个动态名称(例如,如果你使用Deployment
),你没有机会以某种方式使其'端点静态,但你有另一种方式 - StatefulSet与Headless Service。
您可以使用StatefulSet
部署应用程序的多个副本,并为其创建Headless Service
。 StatefulSet
中的每个副本都将使用其唯一名称。
以下是文档中的引用:
Pod
中的每个StatefulSet
都会从StatefulSet
的名称和Pod的序号中获取其主机名。构造的主机名的模式为$(statefulset name)-$(ordinal)
。上面的示例将创建三个名为web-0
,web-1
,web-2
的Pod。StatefulSet
可以使用Headless Service
来控制其Pods
的域。由此Service
管理的域采用以下格式:$(service name).$(namespace).svc.cluster.local
,其中“cluster.local”是群集域。在创建每个Pod
时,它会获得一个匹配的DNS子域,其格式为:$(podname).$(governing service domain)
,其中管理服务由serviceName
上的StatefulSet
字段定义。< / p>