【问题标题】:MiniKubeerror in validating replica set:ValidationError(ReplicaSet.spec.template.metadata):unknown field"spec" in io.k8s.apimachinery.pkg.apis.meta.v1MiniKubeerror 验证副本集:ValidationError(ReplicaSet.spec.template.metadata):unknown field"spec" in io.k8s.apimachinery.pkg.apis.meta.v1
【发布时间】:2019-12-11 04:55:05
【问题描述】:

我使用 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,一切看起来都很好。

【问题讨论】:

    标签: nginx yaml minikube replicaset


    【解决方案1】:

    模板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 中的 pod。

    【讨论】:

    • 这行得通。我总是将部署用于生产环境。我只是在玩 minikube 并错过了缩进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多