我是库伯内卷管理的新手。我需要用一块pvc和下面的吊舱:
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
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kubepvc
spec:
storageClassName: testvolume
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
volumeMode: Block和pv:
apiVersion: v1
kind: PersistentVolume
metadata:
name: kubepv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
storageClassName: testvolume
hostPath:
path: "/pvdata"在我部署完所有的pvc之后:
$ kubectl describe pvc kubepvc
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ProvisioningFailed 6s persistentvolume-controller storageclass.storage.k8s.io "testvolume" not found当然,测试卷pv存在:
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:
$ 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预先
发布于 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: Block的PV。由于您当前的PV没有它,所以它的不会是有界的。
溶液
将volumeMode: Block添加到PV配置中,PVC将绑定PV。
测试
当您描述您的PV时,您可以找到以下信息:
VolumeMode: Filesystem而$ kubectl describe pvc kubepvc有:
VolumeMode: Block当您将VolumeMode: Block添加到您的PV清单中时,如下所示,它将工作。
apiVersion: v1
kind: PersistentVolume
metadata:
name: kubepv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
volumeMode: Block
storageClassName: testvolume
hostPath:
path: "/pvdata"Notes
请记住,volumeMode是immutable字段,所以您需要重新创建这个资源,它不能被编辑。
The PersistentVolume "kubepv" is invalid: volumeMode: Invalid value: "Block": field is immutable关于storageClass,主题相当广泛,但简而言之,storageClassName在PV和PVC中是一样的,它将起作用(至少在Kubeadm上是如此)。
$ 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有用文档
https://stackoverflow.com/questions/66316535
复制相似问题