多个副本访问kubernetes中的缓存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个副本访问kubernetes中的缓存相关的知识,希望对你有一定的参考价值。
Prometheus日志记录的一个统计数据是服务调用的持续时间,但是我想测量同一服务的多个调用的时间。
所以我想创建一个字符串到time.Time的映射
type SomeService struct {
durations map[string]time.Time
}
在第一次输入时,将存储该帐户ID的当前时间
durations[GetId()] = time.Now()
然后最后……在另一个电话中……存储了总时间。
startTime := c.durations[id]
duration, _ := c.durationStat.GetMetricWith(prometheus.Labels{"type": duration})
duration.Set(time.Now().Sub(startTime).Seconds())
delete(c.durations, id)
当只有一个副本但在Kubernetes集群中崩溃时可以使用,对吗?下一个呼叫可能会在另一个端点上传入?您如何在微服务中缓存值,以便每个副本都可以访问它们?
答案
最后找到这个:
https://kubernetes.io/docs/concepts/services-networking/service
您可以将服务配置为始终具有相同的IP地址,通过将service.spec.sessionAffinity设置为“ ClientIP”默认为“无”
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
sessionAffinity: ClientIP
selector:
app: MyApp
这样您可以安全地将简单值缓存在内存中!
以上是关于多个副本访问kubernetes中的缓存的主要内容,如果未能解决你的问题,请参考以下文章
Google Container Engine (Kubernetes):Websocket (Socket.io) 不适用于多个副本
Kubernetes——自动扩展容器!假设你突然需要增加你的应用;你只需要告诉deployment一个新的 pod 副本总数即可