为何配置gcs_fuse_csi_driver_config时提示不支持的块类型?
GKE Terraform配置中
gcs_fuse_csi_driver_config报unsupported block type错误的原因及解决 问题描述
我参考了相关官方文档后,在google_container_cluster资源中配置了GCS FUSE CSI驱动,具体代码如下:
resource "google_container_cluster" "primary-cluster" { enable_kubernetes_alpha = false enable_legacy_abac = false enable_shielded_nodes = false remove_default_node_pool = true initial_node_count = 1 location = local.ws_vars["zone"] logging_service = "logging.googleapis.com/kubernetes" monitoring_service = "monitoring.googleapis.com/kubernetes" name = local.ws_vars["cluster-name"] network = "projects/${local.ws_vars["project-id"]}/global/networks/${local.ws_vars["network"]}" project = local.ws_vars["project-id"] subnetwork = "projects/${local.ws_vars["project-id"]}/regions/us-east4/subnetworks/${local.ws_vars["network"]}" #Figure out how to enable notifications and add pubsub topic for that. ip_allocation_policy { #cluster_ipv4_cidr_block = local.ws_vars["cidr-block"] cluster_secondary_range_name = "subnet-pods" services_secondary_range_name = "subnet-services" } addons_config { horizontal_pod_autoscaling { disabled = false } http_load_balancing { disabled = false } network_policy_config { disabled = false } gcs_fuse_csi_driver_config { enabled = true } } database_encryption { state = "DECRYPTED" } maintenance_policy { daily_maintenance_window { start_time = "01:00" } } network_policy { enabled = true provider = "CALICO" } private_cluster_config { enable_private_endpoint = false enable_private_nodes = true master_ipv4_cidr_block = "172.14.0.0/28" } release_channel { channel = local.ws_vars["channel"] } timeouts {} vertical_pod_autoscaling { enabled = true } workload_identity_config { workload_pool = "${local.ws_vars["project-id"]}.svc.id.goog" } }
但执行Terraform时收到错误提示:unsupported block type,请问这是什么原因?
错误原因及解决方法
出现这个错误的核心原因主要有两个:
- Terraform Google Provider版本过低
gcs_fuse_csi_driver_config配置块是在Terraform Google Provider的4.0.0版本之后才引入的。如果当前使用的Provider版本低于这个阈值,Terraform无法识别该配置块,直接抛出unsupported block type错误。
解决方法:在Terraform配置文件中更新Provider版本约束,示例如下:
terraform { required_providers { google = { source = "hashicorp/google" version = ">= 4.0.0" # 可指定更高的稳定版本 } } }
之后执行terraform init -upgrade完成Provider版本升级。
- GKE集群版本不兼容
GCS FUSE CSI驱动要求GKE集群的Kubernetes版本至少为1.21+(不同Provider版本对应支持的集群版本可能略有差异)。若集群版本低于此要求,即使Provider版本达标,也会出现配置不兼容问题。
解决方法:
- 确认当前GKE集群的Kubernetes版本符合要求;
- 新建集群时,可通过
release_channel指定REGULAR或RAPID通道,或直接配置min_master_version和node_version来使用支持的版本。
- 配置块位置错误(你的配置中不存在此问题)
gcs_fuse_csi_driver_config必须嵌套在addons_config块内,你的配置已正确放置该块,因此可排除此原因。
内容的提问来源于stack exchange,提问作者Nathan McKaskle
相关产品推荐
相关产品推荐

