是否可以在 GKE 的区域集群中创建仅限区域的节点池?

Posted

技术标签:

【中文标题】是否可以在 GKE 的区域集群中创建仅限区域的节点池?【英文标题】:Is it possible to create a zone only node pool in a regional cluster in GKE? 【发布时间】:2021-04-02 12:37:57 【问题描述】:

我有一个用于冗余的区域集群。在这个集群中,我想在这个区域的 1 个区域中创建一个节点池。这种配置可行吗?我尝试这样做的原因是,我想在 1 个区域中运行像 RabbitMQ 这样的服务以避免分裂,并且我的应用程序服务在该区域的所有区域上运行以实现冗余。

我正在使用 terraform 创建集群和节点池,下面是我用于创建区域集群和区域节点池的配置

resource "google_container_cluster" "regional_cluster" 
  provider       = google-beta
  project        = "my-project"
  name           = "my-cluster"
  location       = "us-central1"
  node_locations = ["us-central1-a", "us-central1-b", "us-central1-c"]

  master_auth 
    username = ""
    password = ""

    client_certificate_config 
      issue_client_certificate = false
    
  


resource "google_container_node_pool" "one_zone" 
  project            = google_container_cluster.regional_cluster.project
  name               = "zone-pool"
  location           = "us-central1-b"
  cluster            = google_container_cluster.regional_cluster.name

  node_config 
    machine_type    = var.machine_type
    image_type      = var.image_type
    disk_size_gb    = 100
    disk_type       = "pd-standard"
  


这会引发错误消息

error creating NodePool: googleapi: Error 404: Not found: projects/my-project/zones/us-central1-b/clusters/my-cluster., notFound

【问题讨论】:

提供您正在使用的 TF 版本并将 TF_LOG 更改为调试,将其打印到文本文件中,然后将其添加到您的帖子中以获得更详细的错误信息。 【参考方案1】:

发现google_container_node_pool 中的location 应该指定集群主控的区域/区域。要实际指定节点池位置 node_locations 应该使用。以下是有效的配置

resource "google_container_cluster" "regional_cluster" 
  provider       = google-beta
  project        = "my-project"
  name           = "my-cluster"
  location       = "us-central1"
  node_locations = ["us-central1-a", "us-central1-b", "us-central1-c"]

  master_auth 
    username = ""
    password = ""

    client_certificate_config 
      issue_client_certificate = false
    
  


resource "google_container_node_pool" "one_zone" 
  project            = google_container_cluster.regional_cluster.project
  name               = "zone-pool"
  location           = google_container_cluster.regional_cluster.location
  node_locations     = ["us-central1-b"]
  cluster            = google_container_cluster.regional_cluster.name

  node_config 
    machine_type    = var.machine_type
    image_type      = var.image_type
    disk_size_gb    = 100
    disk_type       = "pd-standard"
  

【讨论】:

以上是关于是否可以在 GKE 的区域集群中创建仅限区域的节点池?的主要内容,如果未能解决你的问题,请参考以下文章

从其他区域访问私有 GKE 集群?

对于每个环境,我们是不是需要单独的 GKE 集群?

更改 GKE 集群节点实例类型

是否有任何工具可以根据 kubernetes 中请求的总 pod 自动扩展 GKE 节点?

我是不是可以在 AWS 中创建仅对 Cognito 用户可用但对任何其他 AWS 用户不可用的密钥?

同一区域中的 GCP 虚拟机无法 Ping 使用 GKE 内部 LB 入口创建的内部 HTTPS 负载均衡器 IP