执行eksctl create创建EKS集群报name与参数不能同时使用如何解决
报错原因
该报错的核心逻辑是eksctl的参数校验规则不允许同时使用位置参数传集群名和--name flag传集群名,你本次报错中us-east-2被eksctl识别成了传入的位置参数集群名,因此和--name=My-Cluster产生冲突。
常见触发场景有四个:
- 你本次使用的eksctl版本比之前搭建集群时的版本高,新版本新增了参数校验规则,不允许同时传位置集群名参数和
--name参数 - 命令的换行符
\后存在多余的空格、制表符等不可见字符,导致\的换行拼接功能失效,后续的参数行被识别为独立的位置参数传入 - 你使用的变量
${eksregion}或${eksclustername}解析异常,输出内容带多余的空格、额外字符串,导致多出来的内容被识别为位置参数 - 本次执行时你不小心在命令末尾额外加了无标识的参数内容,比如误把区域直接写在了命令最后当成位置参数
排查解决步骤
- 检查所有换行符
\,确保\后面没有任何字符,直接跟换行 - 执行以下命令打印变量,确认输出符合预期,无多余内容:
echo ${eksclustername} echo ${eksnodegropname} echo ${eksregion}
- 变量校验正常后,可以直接替换变量为具体值测试执行,示例命令如下:
eksctl create cluster \ --name My-Cluster \ --version 1.21 \ --node-type r5d.4xlarge \ --nodes 5 \ --nodes-min 0 \ --nodes-max 5 \ --nodegroup-name my-node-group \ --region us-east-2
内容的提问来源于stack exchange,提问作者Lew Goldstein
相关产品推荐
相关产品推荐

