我在部署过程中遇到了这个问题:
# kubectl apply -f myfile.yaml
error: error validating "myfile.yaml": error validating data: [ValidationError(Deployment): unknown field "\u00a0 name" in io.k8s.api.apps.v1.Deployment, ValidationError(Deployment): unknown field "\u00a0 replicas" in io.k8s.api.apps.v1.Deployment, ValidationError(Deployment): unknown field "\u00a0 \u00a0 app" in io.k8s.api.apps.v1.Deployment, ValidationError(Deployment): unknown field "\u00a0 \u00a0 \u00a0 - name" in io.k8s.api.apps.v1.Deployment, ValidationError(Deployment): unknown field "\u00a0 \u00a0 \u00a0 app" in io.k8s.api.apps.v1.Deployment, ValidationError(Deployment): unknown field "
尝试使用yamllint
对其进行验证也没有帮助:
# yamllint myfile.yaml
myfile.yaml
1:1 warning missing document start "---" (document-start)
答案 0 :(得分:1)
实际的部署文件无关紧要,因为我实际上找到了解决方案并粘贴在这里以供参考。
原来的问题是unicode空格,用vi
检查文件时不可能发现空格,但是用yamllint
检查文件时应该发现恕我直言。无论如何www.a.com中所述转换文件都可以缓解此问题。
# perl -CSDA -plE 's/\s/ /g' myfile.yaml > myfile2.yaml
# kubectl apply -f myfile2.yaml
deployment.apps/xxx created
希望能帮助别人。
答案 1 :(得分:0)
您的yaml文件中似乎有一些看不见的特殊字符。 我强烈建议使用vi / vim编辑器的:set list命令。 发现特殊字符非常有用,尤其是当您使用kubernetes时会显示yaml文件。