2

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

Redis Memorystore 具有以下属性:

  • IP地址:10.0.6.12
  • 实例 IP 地址范围10.0.6.8/29:( 10.0.6.8- 10.0.6.15)

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

  • 内部IP:10.132.0.5
  • PodCIDR: 10.0.6.0/24( 10.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?如果是这样,怎么做?

提前致谢!

4

1 回答 1

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

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

你可以:

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

希望能帮助到你!

于 2018-09-19T16:47:54.653 回答