首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kubernetes :创建块存储持久卷

kubernetes :创建块存储持久卷
EN

Stack Overflow用户
提问于 2021-02-22 13:22:23
回答 1查看 1.1K关注 0票数 1

我是库伯内卷管理的新手。我需要用一块pvc和下面的吊舱:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: buggypod
spec:
  containers:
  - name: container
    image: ubuntu
    command: [ "bash" ]
    volumeDevices:
    - devicePath: /tmp
      name: podpvc
################
  restartPolicy: Never
  terminationGracePeriodSeconds: 0
  volumes:
  - name: podpvc
    persistentVolumeClaim:
      claimName: kubepvc

我创建了以下pvc

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: kubepvc
spec:
  storageClassName: testvolume
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  volumeMode: Block

和pv:

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kubepv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: testvolume
  hostPath:
    path: "/pvdata"

在我部署完所有的pvc之后:

代码语言:javascript
复制
$ kubectl describe  pvc kubepvc
Events:
  Type     Reason              Age   From                         Message
  ----     ------              ----  ----                         -------
  Warning  ProvisioningFailed  6s    persistentvolume-controller  storageclass.storage.k8s.io "testvolume" not found

当然,测试卷pv存在:

代码语言:javascript
复制
kubectl get pods,pv,pvc -o wide    
NAME           READY   STATUS    RESTARTS   AGE   IP       NODE     NOMINATED NODE   READINESS GATES
pod/buggypod   0/1     Pending   0          30m   <none>   <none>   <none>           <none>

NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE     VOLUMEMODE
persistentvolume/kubepv   10Gi       RWO            Retain           Available           testvolume              3m57s   Filesystem

NAME                            STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
persistentvolumeclaim/kubepvc   Pending                                      testvolume     90s   Block

但是我想发生错误的原因是pv类型是fileSystem:

代码语言:javascript
复制
$ kubectl describe  pv kubepv
Name:            kubepv
Labels:          <none>
Annotations:     <none>
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    testvolume
Status:          Available
Claim:
Reclaim Policy:  Retain
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        10Gi
Node Affinity:   <none>
Message:
Source:
    Type:          HostPath (bare host directory volume)
    Path:          /pvdata
    HostPathType:
Events: 

       <none>

所以,我的问题是,我如何创建一个块PV,以使所有的工作?

Thx预先

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 10:11:36

请记住,PersistentVolumeClaim正在向PersistentVolume“请求”一些东西。

简而言之,PV必须满足一些PVC请求。在YAML中,PV满足PVC请求,如:

  • Storage: PV有10 5Gi,PVC请求5 5Gi。请求执行者。(另外,一旦PV和PVC受到限制,资源将只使用请求的存储,因此在本例中5Gi将被浪费。最好也在PV中使用5Gi,在PVC中使用10 5Gi)。
  • AccessMode:都有ReadWriteOnce
  • storageClassName:测试卷

Misconfiguration

您的PVC正在寻找带有volumeMode: BlockPV。由于您当前的PV没有它,所以它的不会是有界的

溶液

volumeMode: Block添加到PV配置中,PVC将绑定PV

测试

当您描述您的PV时,您可以找到以下信息:

代码语言:javascript
复制
VolumeMode:      Filesystem

$ kubectl describe pvc kubepvc有:

代码语言:javascript
复制
VolumeMode:    Block

当您将VolumeMode: Block添加到您的PV清单中时,如下所示,它将工作。

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolume
metadata:
  name: kubepv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  volumeMode: Block
  storageClassName: testvolume
  hostPath:
    path: "/pvdata"

Notes

请记住,volumeModeimmutable字段,所以您需要重新创建这个资源,它不能被编辑。

代码语言:javascript
复制
The PersistentVolume "kubepv" is invalid: volumeMode: Invalid value: "Block": field is immutable

关于storageClass,主题相当广泛,但简而言之,storageClassNamePVPVC中是一样的,它将起作用(至少在Kubeadm上是如此)。

代码语言:javascript
复制
$ kubectl get storageclass -A
No resources found
user@kubeadm:~$ kubectl get pv,pvc
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE
persistentvolume/kubepv   10Gi       RWO            Retain           Bound    default/kubepvc   testvolume              38s

NAME                            STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/kubepvc   Bound    kubepv   10Gi       RWO            testvolume     45s

有用文档

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

https://stackoverflow.com/questions/66316535

复制
相关文章

相似问题

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