Kubernetes部署文件错误:找到v1.PodSpec的无效字段选择器

时间:2017-09-12 15:26:21

标签: docker kubernetes yaml selenium-grid kubectl

当我尝试使用YAML文件创建部署时,我收到了无效的字段选择器错误。错误是error validating data: found invalid field selector for v1.PodSpec,我的文件可以在下面看到。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
 name: zalenium-deployment
spec:
 replicas: 1
 template:
  metadata:
   labels:
    app: zalenium
  spec:
   serviceAccountName: zalenium
   serviceAccount: zalenium
   selector:
    app: zalenium
    role: grid
   containers:
    - name: zalenium-pod
      image: dosel/zalenium
      ports:
      - containerPort: 4444
        protocol: TCP
      volumeMounts:
      - name: zalenium-shared
        mountPath: /tmp/mounted
      - name: zalenium-videos
        mountPath: /home/seluser/videos
      resources:
       requests:
        memory: "250m"
        cpu: "500m"
       limits:
        memory: "1Gi"
   volumes:
   - name: zalenium-shared
     persistentVolumeClaim:
      claimName: zalenium-shared-claim
   - name: zalenium-videos
     persistentVolumeClaim:
      claimName: zalenium-videos-claim

我尝试过使用在线YAML文件验证程序,但他们似乎没有显示格式有任何问题。当我尝试使用validate = false标志创建上面的部署时,部署会运行,但随后pod会不断崩溃并重新启动(crashLoopBackOff)。我该怎么办?我仍然熟悉k8s,但从错误中我认为它与我的部署中的容器规格有关。接近这个的任何提示?谢谢!

1 个答案:

答案 0 :(得分:2)

由于错误消息状态选择器是invalid field的{​​{1}},因此该字段在v1.PodSpec无效。我认为你要找的是.spec.selector

话虽如此,该文件指出:

  

如果指定,则.spec.selector必须匹配   .spec.template.metadata.labels,或它将被API拒绝。

因此,您还必须将.spec.template.spec.selector添加到元数据标签(role: grid)。您的.yaml文件看起来就像那样:

.spec.template.metadata.labels