Kubernetes Deployment添加linkerd注入注解后kubectl apply报错如何解决
问题原因
你碰到的报错和添加linkerd注入注解本身的功能逻辑无关,属于YAML类型解析错误,是编辑YAML过程中的语法问题:
Kubernetes要求容器环境变量env字段下所有value的取值必须是字符串类型,而你的YAML中存在某一个环境变量的取值被YAML解析为数字1(没有加引号包裹),因此触发API server的类型校验报错。
出现这个问题通常是你在添加注解修改文件时,不小心删除了某个环境变量取值的引号,比如把布尔/数字类的配置KAFKA_ENABLED: "true"误改为KAFKA_ENABLED: 1,未加引号的1会被YAML解析为数字类型,不符合K8s的字段要求。
你添加的linkerd.io/inject: enabled注解本身语法和功能都是正确的,不需要调整。
解决方法
- 检查Deployment下
spec.template.spec.containers[*].env的所有取值,确保所有数字、布尔类的取值都用单引号或双引号包裹,比如KAFKA_ENABLED: "1"、KAFKA_ENABLED: "true"都是合法写法。 - 修改完成后可先执行命令
kubectl apply -f user.yaml --dry-run=client本地校验YAML语法合法性,无报错再正式执行部署命令即可。
内容的提问来源于stack exchange,提问作者aquaman
相关产品推荐
相关产品推荐

