Networking 库伯内特斯:只暴露状态集的单个吊舱

Networking 库伯内特斯:只暴露状态集的单个吊舱,networking,service,kubernetes,kubectl,statefulset,Networking,Service,Kubernetes,Kubectl,Statefulset,对于一个有状态的集合,我可以在内部通过无头服务访问它的pod 我认为,有一种简单的方式将单个吊舱暴露在外部是有意义的(因为吊舱通常有一个状态,因此在它们上面进行负载平衡是没有意义的) 到目前为止,我还没有找到直接的方法。 即使做了kubectl expose pod-1--type NodePort也能为我提供一个平衡所有pod的服务。 这样做是有原因的,还是有一种很好的方法可以访问单个吊舱。我看不出它们是如何将负载分配到单个吊舱的。如果希望客户端将此会话保留在一个pod中,则可以定义服务ses

对于一个有状态的集合,我可以在内部通过无头服务访问它的pod

我认为,有一种简单的方式将单个吊舱暴露在外部是有意义的(因为吊舱通常有一个状态,因此在它们上面进行负载平衡是没有意义的)

到目前为止,我还没有找到直接的方法。 即使做了
kubectl expose pod-1--type NodePort
也能为我提供一个平衡所有pod的服务。
这样做是有原因的,还是有一种很好的方法可以访问单个吊舱。

我看不出它们是如何将负载分配到单个吊舱的。如果希望客户端将此会话保留在一个pod中,则可以定义服务
sessionAffinity:ClientIP
。这将向同一pod发送已建立的客户端流量。

您可以通过在
StatefulSet.kubernetes.io/pod name
标签上进行匹配,在
StatefulSet
中对外公开特定的
pod

例如,如果您的
StatefulSet
命名为
app
,并且您希望将第一个
Pod
的端口80公开为
服务

apiVersion:v1 种类:服务 元数据: 名称:app-0 规格: 类型:负载平衡器 选择器: statefulset.kubernetes.io/pod-name:app-0 端口: -协议:TCP 港口:80 目标港:80
您的群集中是否运行多个完整状态实例集?我有多个副本(如3),即pod-1、pod-2和pod-3。在我的群集中,我可以单独访问每个pod。所以,我不明白为什么从集群外部访问没有意义。我假设在集群内部,您使用POD IP访问POD是正确的?或者您使用IP服务访问pod?实际上,我是通过headless服务通过其DNS名称访问pod的。所以最后,我想这应该是服务IP?