pod如何知道它的副本数
How can a pod know its number of replicas
我正在开发一项服务(用 Go 编写),预计会收到大量请求。根据架构,服务的每个 pod 都应该服务于特定的客户端。比方说,如果此服务有 3 个 pods,拆分将类似于 -> A-H
、I-P
、Q-Z
,其中每个字母都是客户姓名的第一个字母。
但是如果这个服务有4个pods,那么split可以是-> A-F
, G-N
, O-U
, V-Z
.
有什么方法可以让我在 Go 代码中知道还有多少其他副本?
PS:AFAIK,一种可能性是在 deployment.yaml
中有一个 environment variable
。但是有一些方法可以在不改变 yaml
.
的情况下完成缩放。
根据标题,解决方案是使用 StatefulSet
,其中每个服务都知道彼此,并且可以以处理这种情况的方式编写应用程序。
然而,对于这个问题,根据提到的细节,一个不使用 StatefulSet
的好的解决方案是创建一个带有 sessionAffinity: ClientIP
的 Service
。根据详细信息的要求是,后续请求必须转到为先前请求提供服务的特定 pod。这可以使用 sessionAffinity
字段进行配置。 Check documentation for it here With this, when a new client connects, service
will select a pod
after doing load-balancing. Post that, all subsequent requests will go to that pod
only. This can be configured further using SessionAffinityConfig
.
我正在开发一项服务(用 Go 编写),预计会收到大量请求。根据架构,服务的每个 pod 都应该服务于特定的客户端。比方说,如果此服务有 3 个 pods,拆分将类似于 -> A-H
、I-P
、Q-Z
,其中每个字母都是客户姓名的第一个字母。
但是如果这个服务有4个pods,那么split可以是-> A-F
, G-N
, O-U
, V-Z
.
有什么方法可以让我在 Go 代码中知道还有多少其他副本?
PS:AFAIK,一种可能性是在 deployment.yaml
中有一个 environment variable
。但是有一些方法可以在不改变 yaml
.
根据标题,解决方案是使用 StatefulSet
,其中每个服务都知道彼此,并且可以以处理这种情况的方式编写应用程序。
然而,对于这个问题,根据提到的细节,一个不使用 StatefulSet
的好的解决方案是创建一个带有 sessionAffinity: ClientIP
的 Service
。根据详细信息的要求是,后续请求必须转到为先前请求提供服务的特定 pod。这可以使用 sessionAffinity
字段进行配置。 Check documentation for it here With this, when a new client connects, service
will select a pod
after doing load-balancing. Post that, all subsequent requests will go to that pod
only. This can be configured further using SessionAffinityConfig
.