Google Cloud Kubernetes 节点可能由于 IP 范围重叠而无法连接到 Redis Memorystore

GoogleCloud Kubernetes node cannot connect to Redis Memorystore possibly due to overlap in IP ranges

我有一个由多个节点和一个 GoogleCloud Redis Memorystore 组成的 GoogleCloud Kubernetes 集群。分布在这些节点上的是包含需要连接到 Redis Memorystore 的容器的 pod 的副本。我注意到其中一个节点无法连接到 Redis,即该节点上的 pod 中的任何容器都无法连接到 Redis。

Redis Memorystore 具有以下属性:

无法连接到 Redis 的节点具有以下属性:

我假设这个问题是由 Memorystore 和这个节点的 IP 范围重叠引起的。这个假设是否正确?

如果这是问题所在,我想更改节点的 IP 范围。 我试图通过在节点配置中编辑 spec.podCIRD 来做到这一点:

$ kubectl edit node <node-name>

但是这不起作用并导致错误消息:

# * spec.podCIDR: Forbidden: node updates may not change podCIDR except from "" to valid
# * []: Forbidden: node updates may only change labels, taints, or capacity (or configSource, if the DynamicKubeletConfig feature gate is enabled)

是否有其他方法可以更改现有 Kubernetes 节点的 IP 范围?如果是,怎么做?

有时我需要临时增加集群中pods的数量。当我这样做时,我想阻止 Kubernetes 创建 IP 范围 10.0.6.0/24 的新节点。 是否可以告诉 Kubernetes 集群不要创建 IP 范围 10.0.6.0/24 的新节点?如果是,怎么做?

提前致谢!

  • 不适用于节点。 podCidr 在设置新集群的初始步骤中安装网络覆盖时定义。

  • 集群是。但这并不容易。您必须更改整个集群中网络覆盖的 podCidr。这是一个可以完成的棘手过程,但如果您这样做,您还不如部署一个新集群。请记住,某些网络覆盖需要非常特定的 PodCidr。例如,Calico 需要 192.168.0.0/16

你可以:

  1. 使用新的 cidr 创建一个新集群并逐渐移动您的工作负载。
  2. 更改您的 GoogleCloud Redis Memorystore 所在的 IP 地址 cidr。

希望对您有所帮助!