增加现有GKE集群的IP空间

时间:2019-05-14 05:16:46

标签: google-kubernetes-engine

我有一个现有的GKE集群,该集群是根据我从GitHub的教程中获得的Terraform中的一些配置创建的。

该集群有一个默认的节点池,其中包含3个节点。

我试图通过GKE控制台添加具有3个节点的另一个节点池,
但是当我做kubectl get nodes时,我只会看到4个节点,而不是6个。

当我通过gcloud命令行尝试相同操作时,
我记得由于IP空间而看到一条消息。

由于IP空间的原因,我好像不能有6个节点。
如何更改现有群集的IP空间?
我对此进行了一些研究,似乎对于GKE中的现有集群无法更改?
那么,如何以及在哪里为新群集设置此IP空间?

更新
我在GCP的通知中发现了错误消息:

  

(1)部署错误:并非所有在19.314823406s之后在IGM中运行的实例。预期1.当前错误:[IP_SPACE_EXHAUSTED]:实例'--6fa3ebb6-cw6t'创建失败:'projects // regions / us-east4 / subnetworks / -pods-4851bf1518184e60'的IP空间已用尽。 (2)部署错误:并非所有在19.783096708s之后在IGM中运行的实例。预期1.当前错误:[IP_SPACE_EXHAUSTED]:实例'-spec--bf111c8e-h8mm'创建失败:'projects // regions / us-east4 / subnetworks / -pods-4851bf1518184e60'的IP空间已用尽。

2 个答案:

答案 0 :(得分:1)

您看到的错误消息不是您的GKE群集超出IP空间(如果您为Pod IP创建的CIDR范围较小的群集会发生这种情况),而是该群集所在的基础GCP网络存在空间不足。如果查看群集正在运行的子网(根据错误消息,它看起来像是-pods-4851bf1518184e60),则应该看到它没有足够的空间来添加其他节点。

您可以通过删除新节点池并尝试将原始节点池从3个节点扩展到6个节点来确认这是问题所在。

我不记得是否有办法动态扩展子网的大小。如果是这样,则可以将IP空间添加到子网以添加节点。如果没有,您将需要在更大的子网中创建一个新集群。

答案 1 :(得分:0)

我已经解决了这个问题。
有关该问题的背景信息,请详细阅读here
具体来说,该部分:

  

“ ......如果将每个节点的最大Pod设置为30,则根据上表,使用/ 26 CIDR范围,并且为每个节点分配了64 IP   地址。如果您未配置每个的最大豆荚数   节点,使用/ 24 CIDR范围,并且为每个节点分配256 IP   地址...”

我已经通过Terraform演示部署了该集群,所以我不确定如何通过GCP控制台或命令行进行更改。
我对Terraform中的配置进行了更改,从而解决了此问题。

名为kubernetes_pods_ipv4_cidr的变量的Terraform配置为10.1.92.0/22。
这意味着将10.1.92.0 – 10.1.95.255的范围分配给Pod的群集节点。
根据GCP文档,默认情况下,一个节点最多具有110个Pod,并被分配256个IP地址。
因此,使用默认的最大每个节点Pod数时,由于每个节点将为Pod分配256个IP地址,因此群集上只能有4个节点。

我在Terraform配置中添加了一个新字段default_max_pods_per_node,以将该最大值从默认值110减少到55:

resource "google_container_cluster" "my-cluster" {
  provider = "google-beta"

  name    = "my-cluster"
  project = "${local.my-cluster_project_id}"
  location  = "${var.region}"
  default_max_pods_per_node = 55

在那之后,我的集群能够支持更多的节点。
另外,您也可以更改分配给kubernetes_pods_ipv4_cidr的IP范围。

相关问题