Networking Kubernetes服务在一次部署中只有一个吊舱?

Networking Kubernetes服务在一次部署中只有一个吊舱?,networking,ssh,kubernetes,google-cloud-platform,google-compute-engine,Networking,Ssh,Kubernetes,Google Cloud Platform,Google Compute Engine,我有一个k8s部署,其中有3个pod,我还设置了一个NodePort服务,将SSH(端口22)转发到3个pod。一切都按预期进行,但每次我SSH进来,都会得到一个随机的pod。我想让它变粘,这样我就可以得到相同的豆荚,但我不确定这是否可行 根据,设置sessionAffinity:ClientIP可能不适用于节点报告。我认为externalTrafficPolicy:Local不起作用,因为您需要使用负载平衡器服务。我不认为LoadBalancer服务对我来说是可行的,因为我需要创建数百个这样的

我有一个k8s部署,其中有3个pod,我还设置了一个NodePort服务,将SSH(端口22)转发到3个pod。一切都按预期进行,但每次我SSH进来,都会得到一个随机的pod。我想让它变粘,这样我就可以得到相同的豆荚,但我不确定这是否可行

根据,设置
sessionAffinity:ClientIP
可能不适用于节点报告。我认为
externalTrafficPolicy:Local
不起作用,因为您需要使用负载平衡器服务。我不认为LoadBalancer服务对我来说是可行的,因为我需要创建数百个这样的服务,而每个LoadBalancer都要花钱,并且会耗尽配额


我想知道的是,是否有可能创建一个服务,它不指向部署中的所有3个pod,而只指向1个pod。这将有助于我的处境。我可以手动将一个特殊标签附加到1个pod上,并将服务选择器设置为该标签,但如果pod死亡并被替换,我会觉得很脆弱。

解决此问题的一种方法是使用StatefleSet而不是部署来创建您的pod。然后,您的POD有一个确定的名称,当重新启动时,将保留它们的名称。通过这种方式,您可以创建一个指向
myapp-0
myapp-1
等的服务,并合理地确保中断在pod重新调度/重新启动时会中断一段时间,但也会恢复到工作状态。但在扩展StatefulSet时,您需要处理此类服务创建的自动化,并且您的“关联性”将基于客户端连接到的服务端口(不能在同一端口上有多个服务)


也就是说,这绝对不是一个好的模式。您应该确保您的客户端可以连接到任何一个POD,并且通过他们都使用的另一个服务或共享的RWX卷(如果是关于文件的)共享所需状态。

一个不指向部署中所有3个POD的服务,但我希望你能理解库伯内特斯的世界观与你所描述的相反,这将继续使这项任务变得越来越困难。话虽如此,你是否愿意写你的博客来观看豆荚并移动标签?谢谢你深思熟虑的回答,Radek。如果你对我的问题有更多的了解,我希望你能想出一个不遵循坏模式的替代解决方案。在我的情况下,这3个pod运行着想要形成集群的Elixir节点。它们通过随机端口相互通信,我想知道那个端口是什么。如果我使用SSH连接并获取端口,然后尝试在该端口上创建SSH隧道,我会使用不同的端口访问不同的pod,因此无法正常工作。