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