首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让Pod绑定minikube中的本地存储。“节点找不到可用的持久卷”,“正在等待创建第一个使用者”

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

Stack Overflow用户
提问于 2020-09-07 12:26:17
回答 1查看 576关注 0票数 1

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

存储

代码语言:javascript
复制
---
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

因此,我定义了一个local-storage类型的storageClass,如在线教程中所述。然后,我创建了一个从底层主机上的/mnt/data路径请求10 on存储的PersistentVolume。我已经在minikube虚拟机上创建了这个目录

代码语言:javascript
复制
$ minikube ssh
$ ls /mnt
data  sda1

PersistentVolume的存储类为local-storage,并从与hostname in 'minikube'nodeAffinity部分匹配的节点请求它。

然后,我创建了一个PersistentVolumeClaim,它要求类型为local-storage并请求5 5GB。

这里一切都很好,对吧?下面是kubectl的输出

代码语言:javascript
复制
$ 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

RethinkDB部署

现在,我尝试使用标准RethinkDB容器的单个副本来创建一个Deployment

代码语言:javascript
复制
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

这就是我们所看到的。

代码语言:javascript
复制
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.

“%1节点找不到可绑定的可用永久卷”。我不确定这是怎么回事,因为PVC是可用的。

代码语言:javascript
复制
$ 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的Nodes <null> -这是否意味着它不会分配给节点?

EN

回答 1

Stack Overflow用户

发布于 2020-09-07 12:43:25

我认为问题是我的一个是ReadWriteOnce,另一个是ReadWriteMany,所以我在运行minikube mount /tmp/data:/mnt/data时很难获得正确的权限,所以我只是摆脱了将其挂载到底层文件系统中,现在它可以工作了

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63771336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档