如何用Terraform创建指定版本的GKE集群控制平面与节点池
解决GKE集群指定版本配置未生效问题
关键检查点与修正配置
1. 确认目标版本在区域内可用
先用gcloud命令验证你指定的1.28.7-gke.1026000版本是否在us-central1区域可用:
gcloud container get-server-config --location=us-central1
如果该版本不在输出的可用版本列表中,需要更换为区域支持的版本。
2. 集群Master版本配置
- 必须使用
master_version指定精确版本,min_master_version仅设置最低版本,GKE会自动选择更高的兼容版本,无法保证精确匹配。 - 若不需要默认节点池,需禁用它避免版本不一致。
3. 节点池版本配置
- 自定义节点池必须明确指定
version,同时确保默认节点池(若保留)的版本也同步设置,否则默认节点池会使用集群的默认版本(可能与指定版本不符)。 - 禁用自动升级,防止GKE自动更新版本覆盖你的配置。
修正后的配置示例
示例1:保留默认节点池并统一版本
resource "google_container_cluster" "primary" { name = "my-gke-cluster" location = "us-central1" initial_node_count = 1 master_version = "1.28.7-gke.1026000" # 禁用自动升级通道 release_channel { channel = "NONE" } # 指定默认节点池的版本 default_node_pool { version = "1.28.7-gke.1026000" # 禁用默认节点池的自动升级 management { auto_upgrade = false } } } resource "google_container_node_pool" "primary_preemptible_nodes" { name = "my-node-pool" location = "us-central1" cluster = google_container_cluster.primary.name node_count = 1 version = "1.28.7-gke.1026000" # 禁用自定义节点池的自动升级 management { auto_upgrade = false } }
示例2:移除默认节点池,仅使用自定义节点池
resource "google_container_cluster" "primary" { name = "my-gke-cluster" location = "us-central1" initial_node_count = 0 remove_default_node_pool = true master_version = "1.28.7-gke.1026000" # 禁用自动升级通道 release_channel { channel = "NONE" } } resource "google_container_node_pool" "primary_preemptible_nodes" { name = "my-node-pool" location = "us-central1" cluster = google_container_cluster.primary.name node_count = 1 version = "1.28.7-gke.1026000" # 禁用自定义节点池的自动升级 management { auto_upgrade = false } }
额外注意事项
- 确保你的Terraform Google Provider是最新版本,旧版本可能不支持较新的GKE版本。
- 若集群已创建,修改版本时需注意:GKE仅支持小版本内的降级(如1.28.7→1.28.5),跨大版本降级(如1.28→1.27)需要重新创建集群。
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

