【问题标题】:K8s pod has unbound immediate PersistentVolumeClaims - mongoDBK8s pod 有未绑定的即时 PersistentVolumeClaims - mongoDB
【发布时间】:2019-12-30 13:56:26
【问题描述】:

我正在尝试在我的 Kubernetes 集群(谷歌云平台)中部署 mongoDB。现在我专注于部署的 minikube 本地版本。问题是我遇到了这样的错误: pod has unbound immediate PersistentVolumeClaims

这是我在 minikube 中设置 mongodb 的配置文件:

服务文件:

apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    name: mongo
spec:
  ports:
    - port: 27017
      targetPort: 27017
  clusterIP: None
  selector:
    role: mongo

有状态集文件:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mongo
spec:
  selector:
    matchLabels:
      role: mongo
  serviceName: "mongo"
  replicas: 1
  template:
    metadata:
      labels:
        role: mongo
        environment: test
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo
          image: mongo
          command:
            - mongod
            - "--replSet"
            - rs0
            - "--smallfiles"
            - "--noprealloc"
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-persistent-storage
              mountPath: /data/db
        - name: mongo-sidecar
          image: cvallance/mongo-k8s-sidecar
          env:
            - name: MONGO_SIDECAR_POD_LABELS
              value: "role=mongo,environment=test"
  volumeClaimTemplates:
    - metadata:
        name: mongo-persistent-storage
        annotations:
          volume.beta.kubernetes.io/storage-class: "fast"
      spec:
        accessModes: [ "ReadWriteOnce" ]
        resources:
          requests:
            storage: 2Gi

存储类文件:

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: fast
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd

我在这里错过了什么?

【问题讨论】:

    标签: mongodb kubernetes


    【解决方案1】:

    我认为问题在于您正在尝试申请

    provisioner: kubernetes.io/gce-pd
    

    这不应该在本地工作,因为它适用于GCE PD

    对于 minikube,您可以创建hostPath pvc。 Read more

    【讨论】:

      【解决方案2】:

      我在功能开发期间使用 minikube,并且我也在运行 MongoDB,我建议您在使用 minikube 时使用 hostPath,这是我的卷定义:

      volume

      apiVersion: "v1"
      kind: "PersistentVolume"
      metadata:
        name: "blog-repoflow-resources-data-volume"
        namespace: repoflow-blog-namespace
        labels:
          service: "resources-data-service"
          fsOwner: "1001"
          fsGroup: "0"
          fsMode: "775"
      spec:
        capacity:
          storage: "500Mi"
        accessModes:
          - "ReadWriteOnce"
        storageClassName: local-storage
        hostPath:
          path: /home/docker/production/blog.repoflow.com/volumes/blog-repoflow-resources-data-volume
      

      完整的集群已启动并运行并开源:repository

      还要检查 statefulvolume claimservice 定义

      【讨论】:

        猜你喜欢
        • 2019-12-07
        • 2022-10-18
        • 2020-12-27
        • 2019-03-11
        • 2020-11-03
        • 2020-12-19
        • 1970-01-01
        • 2021-01-06
        • 2020-08-31
        相关资源
        最近更新 更多