Kubernetes 上的 memcache 部署如何处理更改的 pod IP 地址?

问题描述 投票:0回答:0

我正在尝试了解我发现的关于在 Kubernetes 上部署分片 Memcache 的官方建议,例如 Google 的在 GKE 上部署 Memcached 。具体来说,它建议部署带有无头服务和 StatefulSet 控制器的 memcached Helm 图表,以便 memcached 客户端可以使用 DNS 发现每个 memcached pod 的 IP 地址:

“服务发现逻辑。 在较高层面上,服务发现逻辑由以下步骤组成:

  1. 应用程序在 kube-dns 中查询 mycache-memcached.default.svc.cluster.local 的 DNS 记录。
  2. 应用程序检索与该记录关联的 IP 地址。
  3. 应用程序实例化一个新的 Memcached 客户端并向其提供检索到的 IP 地址。
  4. Memcached 客户端的集成负载均衡器连接到给定 IP 地址的 Memcached 服务器。”

这些步骤对于让系统最初运行是有意义的,但它们并不符合我将 Kubernetes Pod 及其 IP 地址视为临时的一般理解,包括在使用 StatefulSet 控制器时。像这样的实现,即 Kubernetes Pod 通过直接 IP 地址访问另一个 Kubernetes Pod,是否需要某种重复服务发现机制来使 Memcached 服务器 Pod IP 地址在 Pod 在其生命周期内重新创建时保持最新?甚至不用担心有目的地添加/删除 memcached 服务器 Pod。

(链接的教程确实继续设置 https://github.com/facebook/mcrouter 进行代理,但据我所知,这并不能解决 pod IP 地址变化的问题)

我还在官方 Kubernetes Stateful Set 文档中看到: “Pod 的序号、主机名、SRV 记录和 A 记录名称并未更改,但与 Pod 关联的 IP 地址可能已更改。在本教程使用的集群中,它们已更改。这就是为什么重要的是不要更改配置其他应用程序通过 IP 地址连接到 StatefulSet 中的 Pod。”

这似乎与 Google 的建议直接冲突 - 我是否错过了一些关键的理解?

kubernetes google-kubernetes-engine memcached
© www.soinside.com 2019 - 2024. All rights reserved.