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

时间:2018-09-19 13:58:33

标签: redis kubernetes gcloud google-cloud-memorystore

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

Redis Memorystore具有以下属性:

  • IP地址:10.0.6.12
  • 实例IP地址范围:10.0.6.8/2910.0.6.8-10.0.6.15

无法与Redis建立连接的节点具有以下属性:

  • 内部IP:10.132.0.5
  • PodCIDR:10.0.6.0/2410.0.6.0-10.0.6.255

我认为此问题是由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范围吗?如果可以,怎么办?

有时候我需要暂时增加集群中的Pod数量。执行此操作时,我想阻止Kubernetes创建IP范围为10.0.6.0/24的新节点。 是否可以告诉Kubernetes集群不要创建IP范围为10.0.6.0/24的新节点?如果可以,怎么办?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

  • 对于集群是。但这并不容易。您必须更改整个集群中网络覆盖的podCidr。这是一个棘手的过程,但是如果这样做,您最好部署一个新集群。请记住,某些网络覆盖图需要非常特定的PodCidr。例如,印花棉布需要192.168.0.0/16

您可以:

  1. 使用新的cidr创建新的集群并逐步移动工作量。
  2. 更改GoogleCloud Redis Memorystore所在的IP地址cidr。

希望有帮助!