Kubernetes使用yaml创建Deployment报v1版本无法处理语法问题求助
Kubernetes Deployment YAML 错误排查结果
存在的3处语法/逻辑错误
- 缺省API版本声明:第一个Deployment资源未配置
apiVersion: apps/v1字段,K8s无法识别资源所属的API组,直接触发解析异常。 - Labels格式非法:两处Pod模板的
.spec.template.metadata.labels均被错误赋值为字符串test,K8s要求labels必须为键值对映射结构,这是报错信息中expect { or n, but found "的直接诱因。 - 标签匹配异常:
spec.selector.matchLabels中键名拼写为enviroment,和上层metadata定义的environment、Pod模板标签拼写不一致,即使修复前两个问题,也会出现Deployment无法匹配Pod模板的错误。
修复后完整YAML
apiVersion: apps/v1 kind: Deployment metadata: labels: environment: test name: agentstubpod-deployment spec: replicas: 3 selector: matchLabels: environment: test minReadySeconds: 10 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate template: metadata: labels: environment: test spec: containers: - name: agentstub image: some-repo:latest --- apiVersion: apps/v1 kind: Deployment metadata: labels: environment: test name: proxystubpod-deployment spec: replicas: 3 selector: matchLabels: environment: test minReadySeconds: 10 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate template: metadata: labels: environment: test spec: containers: - name: procyservice image: some-repo:latest
本地校验方法
你可以在提交到集群前,先执行本地校验命令提前发现问题:kubectl apply -f deployment_test.yaml --dry-run=client
内容的提问来源于stack exchange,提问作者Manav Joshi
相关产品推荐
相关产品推荐

