我在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的缓存。
答案 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。