在openshift中同步服务的所有Pod

时间:2018-07-31 11:39:03

标签: docker spring-boot kubernetes openshift

我在openshift 3中创建了一个服务(后端),并且启动了3个pod。因此,共有三个Pod:backend-1-abc,backend-1-xyz和backend-1-efg。另外,我为此https://backend.abc.com添加了路由器。

每个pod都有一个内置的缓存,该缓存从DB读取数据并将其存储到其内部缓存中。还有一个端点“ / refresh”。仅当我们明确命中端点“ / refresh”时,才会刷新Pod中的缓存。

但是我的问题是,每当我按下“ https://backend.abc.com/refresh”时,由于Kubernetes负载平衡,将只调用一个Pod的/ refresh端点,并且其缓存会刷新。但是其他两个Pod的缓存保持不变。

请告诉我,有没有办法同时刷新所有Pod的缓存。

1 个答案:

答案 0 :(得分:0)

我认为您可以尝试直接访问Service,因为Service根据round-robin算法处理请求。

例如>

# oc get svc
NAME      CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
backend   172.30.6.68     <none>        8080/TCP   1m 

--- Repeat the curl cmd 3times, if you have 3 pods.
# curl http://172.30.6.68:8080/refresh
# curl http://172.30.6.68:8080/refresh
# curl http://172.30.6.68:8080/refresh

-我根据Graham的解决方案进行了更新。

如果确保刷新缓存,则可以请求所有Pod。

  • oc get endpoints <Your backend service name> -o yaml | grep ip可以列出您所有的pod IP。
  • 您可以基于上述IP创建并运行批处理脚本。