我有使用Azure Kubernetes群集和AKS负载平衡器的服务。我想将一些HTTP(客户端)请求转发到所有实例。一般有什么方法可以使用AKS或Kubernetes配置此行为?
假设我有运行两个副本/实例的XYZ API。
我有一些对应用程序domain.com/testendpoint的其余API请求
当前,它使用AKS负载平衡器以循环方式将请求发送到XYZ-1和XYZ-2。我正在查看当请求端点为testendpoint
且所有其他API请求使用相同的轮询顺序时是否可以将请求转发到两个实例(XYZ-1和XYZ-2)。
用例每天一次或两次通过一次REST调用刷新服务内存数据,该REST调用将在需要时由另一个服务触发。因此,要确保所有pod实例都通过HTTP请求更新/刷新内存中的数据。
当请求端点为testendpoint时是否有可能将请求转发到两个实例(XYZ-1和XYZ-2)
这不是HTTP协议中的功能,因此你需要专用的服务来处理此问题。
用例每天一次或两次通过一次REST调用刷新服务内存数据,该REST调用将在需要时由另一个服务触发。因此,要确保所有pod实例都通过HTTP请求更新/刷新内存中的数据。
我建议你创建一个新的实用程序服务“ update-service”-你每天将呼叫发送一次。然后,此服务向XYZ的每个实例发出请求,例如XYZ-1
和XYZ-2
。
乔纳斯,您好,感谢您的回复。是否有可用的AKS(或K8S)API来实现这一点,以查找所有实例并将请求发送给这些实例?
如果
XYZ
将其部署为StatefulSet(而不是Deployment),则这很容易,因为Pods的名称将如您所写的那样XYZ-0
,XYZ-1
...,取决于您拥有多少个副本。对于部署而言,使用库(例如github.com/kubernetes/client-go或github.com/kubernetes-client/java)来查询具有与“选择器”相同标签的Pod很容易。与其使用Kubernetes客户端(并设置所需的权限/服务帐户),不如考虑使用其他无头服务,该服务没有自己的集群IP和负载平衡,而是在进行dns查找时返回所有正常的Pod IP。参见dev.to/kaoskater08/…