【问题标题】:Getting ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec获取 ValidationError(Deployment.spec):在 io.k8s.api.apps.v1.DeploymentSpec 中缺少必填字段“选择器”
【发布时间】:2021-04-25 18:53:06
【问题描述】:

我最初在这里提到了类似的问题:ValidationError: missing required field "selector" in io.k8s.api.v1.DeploymentSpec

我将 apiVersion 即 apiVersion: extensions/v1beta1 更改为 apiVersion: apps/v1,我正在使用 kubeadm 和 3 个运行工作程序的节点。

但是在我的 yaml 中,我确实有匹配的标签选择器

    labels:
      app: rabbitmq
      role: master
      tier: queue

如果我尝试运行以下 yaml 部署:我得到

部署“rabbitmq”无效:

  • spec.selector:必填值
  • spec.template.metadata.labels:无效值:map[string]string{"app":"rabbitmq", "role":"master", "tier":"queue"}:selector 没有匹配模板labels

rabbitmq.yaml

---
# EXPORT SERVICE INTERFACE
kind: Service
apiVersion: v1
metadata:
    name: message-queue
    labels:
      app: rabbitmq
      role: master
      tier: queue
spec:
  ports:
  - port: 5672
    targetPort: 5672
  selector:
      app: rabbitmq
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rabbitmq-pv-claim
  labels:
    app: rabbitmq
    role: master
    tier: queue
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
spec:
  replicas: 1
  template:
    metadata:
      labels:
         app: rabbitmq
         role: master
         tier: queue
    spec:
      containers:
      - name: rabbitmq
        image: bitnami/rabbitmq:3.7
        envFrom:
        - configMapRef:
            name: bitnami-rabbitmq-config
        ports:
        - name: queue
          containerPort: 5672
        - name: queue-mgmt
          containerPort: 15672
        livenessProbe:
          exec:
            command:
            - rabbitmqctl
            - status
          initialDelaySeconds: 120
          timeoutSeconds: 5
          failureThreshold: 6
        readinessProbe:
          exec:
            command:
            - rabbitmqctl
            - status
          initialDelaySeconds: 10
          timeoutSeconds: 3
          periodSeconds: 5
        volumeMounts:
        - name: rabbitmq-storage
          mountPath: /bitnami
      volumes:
      - name: rabbitmq-storage
        persistentVolumeClaim:
          claimName: rabbitmq-pv-claim

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    您缺少Deployment.spec 下的selector: 字段。目前那里只有replicas:template:

    来自Deployment docs的示例:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        ...
    

    另见格式:

    kubectl explain Deployment.spec
    

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 1970-01-01
      • 2021-12-10
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多