Kubernetes部署文件错误:发现v1.PodSpec的无效字段select器

当我尝试使用YAML文件创build我的部署时,出现无效的字段select器错误。 该错误是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文件validation器,他们似乎没有显示任何格式错误。 当我尝试使用validate = false标志创build上面的Deployment时,部署运行,但是随后Pod不断崩溃并重新启动(crashLoopBackOff)。 我应该看什么? 我仍然熟悉k8s,但从错误我会认为它与我的部署中的容器规格有关。 任何提示接近这个? 谢谢!

由于错误消息状态select器是v1.PodSpecinvalid field – 因此此字段在.spec.template.spec.selector 。 我认为你正在寻找的是一个.spec.selector 。

话虽如此,文件指出:

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

所以你必须添加role: grid到你的元数据标签(在.spec.template.metadata.labels )。 你的.yaml文件看起来像那样:

 apiVersion: apps/v1beta1 kind: Deployment metadata: name: zalenium-deployment spec: selector: matchLabels: app: zalenium role: grid replicas: 1 template: metadata: labels: app: zalenium role: grid spec: serviceAccountName: zalenium serviceAccount: zalenium 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