pods 之间的亲和力和反亲和力。确保 Web 应用程序连接到本地 Redis 缓存

affintity and anti-affinity between pods. ensure webapp connect to local redis cache

在关于 kubernetes 的亲和性和反亲和性规则的文档中,有一个 web application and a local redis cache 的实用用例。

  1. redis 部署配置了 PodAntiAffinity 以确保调度程序不会在单个节点上共同定位副本。
  2. Web 应用程序部署具有 pod 亲和力,以确保应用程序与具有标签存储 (Redis) 的 pod 一起调度。

要从 webapp 连接到 redis,我们必须定义一个服务。

问题:我们如何确定 webapp 将始终使用位于同一节点而不是另一个节点上的 redis?如果我从 Kubernetes v1.2 读取 version compatibility,kube-proxy 的 iptables 模式 变成了 default

阅读有关 iptable mode for kube-proxy 的文档,它说 默认情况下 ,iptables 模式下的 kube-proxy 随机选择后端 .

所以我对这个问题的回答是: 不,我们不能确定。如果您想确定,那么将 redis 和 webapp 放在一个 pod 中?

这个可以在(redis)Service中配置,但一般不推荐:

Setting spec.externalTrafficPolicy to the value Local will only proxy requests to local endpoints, never forwarding traffic to other nodes

这是一个复杂的话题,请在此处阅读更多内容: