吊舱如何知道其副本数量

时间:2019-10-10 07:46:17

标签: go kubernetes kubernetes-pod

我正在开发一项服务(用Go编写),预计将收到大量请求。根据体系结构,服务的每个Pod应该服务于特定的客户端。可以说,如果此服务有3个窗格,则拆分将类似于-> A-HI-PQ-Z,其中每个字母都是客户名称的第一个字母。

但是,如果此服务有4个容器,则拆分可以是-> A-FG-NO-UV-Z

有没有一种方法可以在Go代码中知道还有多少其他副本?

PS:AFAIK,一种可能性是在environment variable中有一个deployment.yaml。但是有些方法可以在不更改yaml的情况下进行缩放。

1 个答案:

答案 0 :(得分:0)

按照标题,解决方案是使用StatefulSet,其中每个服务都可以相互识别,并且可以按照处理这种情况的方式编写应用。

但是,对于这个问题,根据上面提到的详细信息,一个不使用StatefulSet的好的解决方案是使用Service创建一个sessionAffinity: ClientIP。根据详细信息的要求,后续请求必须转到服务于先前请求的特定容器。可以使用sessionAffinity字段进行配置。 Check documentation for it here这样,当新客户端连接时,service将在进行负载平衡后选择一个pod。发布该消息,所有后续请求将仅转到该pod。可以使用SessionAffinityConfig进行进一步配置。