k3s部署Deployment时YAML标签与spec字段报错求助
故障根因
你的YAML存在层级缩进错误:spec字段被错误缩进成了metadata的子字段,而非和metadata平级的Deployment顶级字段。K8s API解析时识别不到顶级的spec.selector配置,才会抛出你看到的两个报错。
错误位置的结构片段如下:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: darwin_tritron_server name: darwin_tritron_server spec: # ❌ 此处多缩进2个空格,属于metadata的子字段,不是Deployment顶级字段 replicas: 3 selector: matchLabels: app: darwin_tritron_server
K8s要求Deployment的spec必须和apiVersion、kind、metadata处于同一缩进层级,把spec写到metadata下之后,API服务器读取Deployment配置时找不到顶级spec块,自然提示spec.selector: Required value,同时无法匹配模板标签。
修正后的完整YAML
--- apiVersion: apps/v1 kind: Deployment metadata: labels: app: darwin_tritron_server name: darwin_tritron_server spec: # ✅ 调整缩进,和metadata平级 replicas: 3 selector: matchLabels: app: darwin_tritron_server template: metadata: labels: app: darwin_tritron_server spec: containers: - args: - "cd /models && /opt/tritonserver/bin/tritonserver --model-repository=/models --allow-gpu-metrics=false --strict-model-config=false" command: - /bin/sh - "-c" image: "nvcr.io/nvidia/tritonserver:20.12-py3" name: flower ports: - containerPort: 8000 name: http-triton - containerPort: 8001 name: grpc-triton - containerPort: 8002 name: metrics-triton resources: limits: nvidia.com/mig-1g.5gb: 1 volumeMounts: - mountPath: /models name: models volumes: - name: models nfs: path: <path/to/flowerdemo/model/files> readOnly: false server: "<IP address of the server>"
额外注意事项
- 原启动命令
cd /models /opt/tritonserver/...缺少逻辑连接符,cd执行后不会自动运行后续启动命令,修正版补了&&,否则容器启动后会直接退出。 - 部署前可先用
kubectl apply --dry-run=client -f <你的yaml文件名>做本地校验,能快速定位缩进、字段层级类配置错误。 - 编写K8s YAML时严格保持同层级字段缩进一致,不要混用Tab和空格。
内容的提问来源于stack exchange,提问作者Siddharth
相关产品推荐
相关产品推荐

