Mongodb Yaml`selector`与模板`labels'不匹配

我正在尝试使用minikube在容器中在本地设置mongodb,遵循以下示例存储库: https://github.com/pkdone/minikube-mongodb-demo

我得到了错误:

The StatefulSet "mongod" is invalid:
* spec.selector: Required value
* spec.template.metadata.labels: Invalid value: map[string]string{"environment":"test","replicaset":"MainRepSet","role":"mongo"}: `selector` does not match template `labels`

这是我的完整Yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: mongodb-service
  labels:
    name: mongo
spec:
  ports:
  - port: 27017
    targetPort: 27017
  clusterIP: None
  selector:
    role: mongo
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongod
spec:
  serviceName: mongodb-service
  replicas: 3
  template:
    metadata:
      labels:
        role: mongo
        environment: test
        replicaset: MainRepSet
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: replicaset
                  operator: In
                  values:
                  - MainRepSet
              topologyKey: kubernetes.io/hostname
      terminationGracePeriodSeconds: 10
      volumes:
        - name: secrets-volume
          secret:
            secretName: shared-bootstrap-data
            defaultMode: 256
      containers:
        - name: mongod-container
          #image: pkdone/mongo-ent:3.4
          image: mongo
          command:
            - "numactl"
            - "--interleave=all"
            - "mongod"
            - "--wiredTigerCacheSizeGB"
            - "0.1"
            - "--bind_ip"
            - "0.0.0.0"
            - "--replSet"
            - "MainRepSet"
            - "--auth"
            - "--clusterauthMode"
            - "keyFile"
            - "--keyFile"
            - "/etc/secrets-volume/internal-auth-mongodb-keyfile"
            - "--setParameter"
            - "authenticationmechanisms=SCRAM-SHA-1"
          resources:
            requests:
              cpu: 0.2
              memory: 200Mi
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: secrets-volume
              readOnly: true
              mountPath: /etc/secrets-volume
            - name: mongodb-persistent-storage-claim
              mountPath: /data/db
  volumeclaimTemplates:
  - metadata:
      name: mongodb-persistent-storage-claim
      annotations:
        volume.beta.kubernetes.io/storage-class: "standard"
    spec:
      accessModes: [ "ReadWriteonce" ]
      resources:
        requests:
          storage: 1Gi
qwq200481 回答:Mongodb Yaml`selector`与模板`labels'不匹配

您的Statefulset模板上缺少spec.selector字段。

  

选择器是对应该与副本匹配的Pod的标签查询   计数。 它必须与pod模板的标签匹配。更多信息:   https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

您需要添加spec.selector才能匹配一个或多个标签。示例:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongod
spec:
  serviceName: mongodb-service
  replicas: 3
  selector:
    matchLabels:
      role: mongo
  template:
    metadata:
      labels:
        role: mongo
        environment: test
        replicaset: MainRepSet
...

您使用的示例可能已过时。 former apps/v1beta1spec.selector添加了一个默认值,如果为空,则不再是这种情况。

  

选择器是对应该与副本匹配的Pod的标签查询   计数。 如果为空,则默认为窗格模板上的标签。更多信息:   https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

应在apps/v1beta2apps/v1中对其进行显式设置。

本文链接:https://www.f2er.com/3141256.html

大家都在问