我正在尝试为 Kubernetes 集群设置基于 NFS 的持久卷,我已创建挂载点并将共享挂载到配置为在启动时挂载的客户端: 在其中一个客户端上挂载的共享示例
我已经创建了我的卷 yaml,如下所示
apiVersion: v1
kind: PersistentVolume
metadata:
name: cc-pv-volume
labels:
type: local
author: Administrator
spec:
storageClassName: manual
claimRef:
name: pv-claim
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
# persistentVolumeReclaimPolicy: Retain
nfs:
path: /nfs/general
server: 172.16.0.4
readOnly: false
和我的PersistentVolumeClaim yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
当我运行命令时sudo kubectl apply -f pv-claim.yaml
终端返回persistentvolumeclaim/pv-claim created
,但当我运行时sudo kubectl get pv cc-pv-volume
卷的状态仍然为“可用”,而不是显示“已绑定”
任何关于我做错的事情的想法,谢谢,Archvirus
编辑:我注意到在 PV 中 AccessMode 是:ReadWriteMany
但在 PVC 中 AccessMode 是:ReadWriteOnce
我编辑了 PVC 以将 AccessMode 更改为,ReadWriteMany
因为我有 2 个节点(Ubuntu1 和 Ubuntu2),但当我应用此更改时,终端返回
The PersistentVolumeClaim "pv-claim" is invalid: spec: Forbidden: spec is immutable after creation except resources.requests and volumeAttributesClassName for bound claims
core.PersistentVolumeClaimSpec{
- AccessModes: []core.PersistentVolumeAccessMode{"ReadWriteOnce"},
+ AccessModes: []core.PersistentVolumeAccessMode{"ReadWriteMany"},
Selector: nil,
Resources: {Requests: {s"storage": {i: {...}, s: "2Gi", Format: "BinarySI"}}},
... // 6 identical fields
}
我尝试创建一个名为 pv-claim-test 的新 yaml 文件,它与“pv-claim”相同,但 AccessMode 更改为ReadWriteMany
,删除了“pv-claim.yaml”并尝试应用新的 PVC,但终端出现与之前相同的错误。
我认为问题是由于 PV 和 PVC 具有不同的 StorageClass,PV 不能满足声明的要求因此不具有约束力,但我不知道为什么我无法应用新的 PVC,并且当我使用该命令时sudo kubectl apply -f pv-claim-test.yaml
错误仍然引用pv-claim.yaml
即使pv-claim.yaml
不再存在并且我没有尝试应用该 yaml。
运行“sudo kubectl describe persistentvolume cc-pv-volume”的结果显示没有声明,但它不允许我更改正在应用的 PVC
Name: cc-pv-volume
Labels: author=Administrator
type=local
Annotations: <none>
Finalizers: [kubernetes.io/pv-protection]
StorageClass: manual
Status: Available
Claim:
Reclaim Policy: Retain
Access Modes: RWX
VolumeMode: Filesystem
Capacity: 2Gi
Node Affinity: <none>
Message:
Source:
Type: NFS (an NFS mount that lasts the lifetime of a pod)
Server: 172.16.0.4
Path: /nfs/general
ReadOnly: false
Events: <none>
尝试重新创建
PersistentVolumeClaim
对象并明确引用现有的PersistentVolume