我有一个现有的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空间已用尽。
答案 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范围。