验证副本集时出现MiniKubeerror:ValidationError(ReplicaSet.spec.template.metadata):io.k8s.apimachinery.pkg.apis.meta.v1中的未知字段“ spec”

时间:2019-08-02 14:32:32

标签: nginx yaml minikube replicaset

我使用minikube,下面是示例Yaml文件。尝试创建Pod时出现以下错误。

$ kubectl create -f nginx-rs.yml 
error: error validating "nginx-rs.yml": error validating data: ValidationError(ReplicaSet.spec.template.metadata): unknown field "spec" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta; if you choose to ignore these errors, turn validation off with --validate=false

这是我的YAML文件。

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
spec:
  selector:
    matchLabels:
      app: nginx-app
  replicas: 3
  template:
    metadata:
     name: nginx-pod
     labels:
       app: nginx-app
       tier: frontend
     spec:
       containers:
       - name: nginx-container
         image: nginx
         ports:
         - containerport: 80

我用this tool交叉检查了我的YAML,一切看起来都很好。

1 个答案:

答案 0 :(得分:0)

模板spec嵌套在metadata下,而不是模板本身。

只需将spec的一个凹痕移回嵌套在模板下:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
spec:
  selector:
    matchLabels:
      app: nginx-app
  replicas: 3
  template:
    metadata:
     name: nginx-pod
     labels:
       app: nginx-app
       tier: frontend
    spec:
     containers:
     - name: nginx-container
       image: nginx

旁注:最好使用Deployment而不是ReplicaSet以避免与端口冲突。 Deployment对象会自动创建ReplicaSet,以控制spec中的容器。