Pod 之间的亲和力和反亲和力. 确保 Web 应用连接到本地 Redis 缓存



在关于 kubernetes 的亲和力和反亲和力规则的文档中,有一个围绕 Web 应用程序和本地 Redis 缓存的实用用例。

  1. Redis 部署配置了 PodAntiAffinity,以确保调度程序不会将副本共置在单个节点上。
  2. Web 应用程序部署具有容器
  3. 关联性,以确保使用具有标签存储 (Redis ( 的容器计划应用程序。

要从 Web 应用程序连接到 redis,我们必须定义一个服务。

问题:我们如何确定 Web 应用程序将始终使用位于同一节点而不是另一个节点上的 redis?如果我从 Kubernetes v1.2 中读取版本兼容性,kube-proxy 的iptables模式成为默认模式。

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

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

这可以在(redis(服务中配置,但通常不建议:

spec.externalTrafficPolicy设置为值Local将仅将请求代理到本地终结点,而不会将流量转发到其他节点

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

  • https://kubernetes.io/docs/tutorials/services/source-ip/
  • https://kubernetes.io/docs/concepts/services-networking/service/

最新更新