运行acm-terraform-blog-part1时GKE节点池创建报错修复方案咨询
问题描述
运行acm-terraform-blog-part1项目创建GKE节点池时返回如下错误:
Error: error creating NodePool: googleapi: Error 400: Creation of node pools using node images based on Docker container runtimes is not supported in GKE v1.23. This is to prepare for the removal of Dockershim in Kubernetes v1.24. We recommend that you migrate to image types based on Containerd (examples). For more information, contact Cloud Support., badRequest.
问题原因
该报错是GKE版本迭代的强制限制:GKE 1.23及以上版本不再支持基于Docker容器运行时的节点镜像,为Kubernetes 1.24版本正式移除Dockershim组件做适配,要求所有新建节点池必须使用基于Containerd运行时的镜像类型。
修复步骤
- 打开项目中定义GKE节点池的Terraform配置文件,找到
google_container_node_pool资源块下的node_config配置段。 - 将
image_type字段的原有取值替换为Containerd对应的镜像类型:- 原配置使用
COS(Docker版Container-Optimized OS)的,替换为COS_CONTAINERD - 原配置使用
UBUNTU(Docker版Ubuntu)的,替换为UBUNTU_CONTAINERD
- 原配置使用
- 配置修改参考示例:
resource "google_container_node_pool" "main_pool" { name = "main-node-pool" cluster = google_container_cluster.main.id location = var.cluster_region node_config { # 替换为Containerd类型镜像 image_type = "COS_CONTAINERD" machine_type = var.node_machine_type # 磁盘、网络、服务账号等其余原有配置保持不变即可 } # 节点数量、自动扩缩容等其余原有配置保持不变 }
- 配置修改完成后,在项目根目录执行
terraform init(未初始化过provider时需要执行)、terraform plan,确认输出的变更计划仅涉及节点镜像类型调整、无不符合预期的资源变更。 - 校验通过后执行
terraform apply确认变更,等待节点池创建完成即可。
补充说明:Containerd运行时完全兼容符合OCI标准的容器镜像,原有部署在集群上的业务应用不需要做镜像层面的改造即可正常运行。
内容的提问来源于stack exchange,提问作者amp
相关产品推荐
相关产品推荐

