无法将Pod绑定到minikube中的本地存储 “节点未找到可用的持久卷”,“等待创建第一个使用者”

问题描述

在minikube使用local-storage上配置Kubernetes部署时遇到了一些麻烦。我正在尝试建立一个rethinkdb实例,该实例将从minikube VM挂载目录到rethinkdb Pod。我的设置如下

存储

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: rethinkdb-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /mnt/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - minikube
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rethinkdb-pv-claim
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

因此,我定义了storageClass类型的local-storage,如在线教程中所述。然后,我做一个PersistentVolume,要求从基础主机上的/mnt/data路径获取10GB的存储空间。我已经在minikube VM上建立了这个目录

$ minikube ssh
$ ls /mnt
data  sda1

PersistentVolume的存储类为local-storage,并向与nodeAffinity的{​​{1}}部分匹配的节点请求它。

然后我制作一个hostname in 'minikube',要求输入类型PersistentVolumeClaim,并请求5GB。

这里一切都很好,对吧?这是local-storage

的输出
kubectl

RethinkDB部署

我现在尝试使用标准RethinkDB容器的单个副本制作一个$ kubectl get pv,pvc,storageClass NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/rethinkdb-pv 10Gi RWO Delete Available local-storage 9m33s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/rethinkdb-pv-claim Pending local-storage 7m51s NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE storageclass.storage.k8s.io/local-storage kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 9m33s storageclass.storage.k8s.io/standard (default) k8s.io/minikube-hostpath Delete Immediate false 24h

Deployment

这要求一个apiVersion: apps/v1 kind: Deployment metadata: creationTimestamp: null labels: name: database name: rethinkdb spec: progressDeadlineSeconds: 2147483647 replicas: 1 selector: matchLabels: service: rethinkdb template: metadata: creationTimestamp: null labels: service: rethinkdb spec: containers: - name: rethinkdb image: rethinkdb:latest volumeMounts: - mountPath: /data name: rethinkdb-data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: rethinkdb-data persistentVolumeClaim: claimName: rethinkdb-pv-claim 的单个副本,并尝试将rethinkdb持久卷声明挂载为名称rethinkdb-pv-claim,然后尝试将其挂载在rethinkdb-data中容器。

这就是显示的内容

/data

“ 1个节点未找到可用的持久卷来绑定”。我不确定这是怎么回事,因为可以使用PVC。

Name:           rethinkdb-6dbf4ccdb-64gk5
Namespace:      development
Priority:       0
Node:           <none>
Labels:         pod-template-hash=6dbf4ccdb
                service=rethinkdb
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/rethinkdb-6dbf4ccdb
Containers:
  rethinkdb:
    Image:        rethinkdb:latest
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:
      /data from rethinkdb-data (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-d5ncp (ro)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  rethinkdb-data:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  rethinkdb-pv-claim
    ReadOnly:   false
  default-token-d5ncp:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-d5ncp
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  73s (x7 over 8m38s)  default-scheduler  0/1 nodes are available: 1 node(s) didn't find available persistent volumes to bind.

我认为其中一个提示是

$ kubectl describe pvc Name: rethinkdb-pv-claim Namespace: development StorageClass: local-storage Status: Pending Volume: Labels: <none> Annotations: Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Mounted By: rethinkdb-6dbf4ccdb-64gk5 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal WaitForFirstConsumer 11s (x42 over 10m) persistentvolume-controller waiting for first consumer to be created before binding (针对Pod)-是否表示未将其分配给节点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)