Kubernetes NFS PersistentVolumeClaim 的状态为 Pending
Kubernetes NFS PersistentVolumeClaim has status Pending
我正在尝试将我的 Kubernetes 集群配置为将本地 NFS 服务器用于持久卷。
我设置 PersistentVolume 如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: hq-storage-u4
namespace: my-ns
spec:
capacity:
storage: 10Ti
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /data/u4
server: 10.30.136.79
readOnly: false
PV 在 kubectl 中看起来没问题
$ kubectl get pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
hq-storage-u4 10Ti RWX Retain Released my-ns/pv-50g 49m
然后我尝试创建 PersistentVolumeClaim:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-50gb
namespace: my-ns
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
Kubectl 显示 pvc 状态为 Pending
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
pvc-50gb Pending 16m
当我尝试将卷添加到部署时,出现错误:
[SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "pvc-50gb", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "pvc-50gb", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "pvc-50gb", which is unexpected.]
如何让 pvc 进入工作状态?
我无法对您的 post 发表评论,所以我将尝试回答这个问题。
当 PVC 在我的 NFS 集群上不工作时,我遇到了 2 种错误。安装PV通常会成功,所以提供的状态信息就不多说了。
- PV和PVC的annotation和spec不一样。看起来不是这样的。
- 使用NFS资源的pod节点无法挂载该资源。在应该挂载 NFS 资源的节点上尝试
mount -t nfs 10.30.136.79:/data/u4 /mnt
。这应该会成功。如果失败,可能是
- 缺少挂载权限。在您的 NFS 服务器中纠正
/etc/exports
。
- 防火墙阻止了 NFS 端口。修复防火墙。
还有一点,pod 中的非特权用户可能无法写入 NFS 资源。 pod 中 NFS 用户的 uid/gid 必须匹配 NFS 资源的权限。
好机会!
原来我需要把IP(我也把路径)放在引号里。修复后,pvc状态为Bound,pod可以正确挂载
我正在尝试将我的 Kubernetes 集群配置为将本地 NFS 服务器用于持久卷。
我设置 PersistentVolume 如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: hq-storage-u4
namespace: my-ns
spec:
capacity:
storage: 10Ti
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: /data/u4
server: 10.30.136.79
readOnly: false
PV 在 kubectl 中看起来没问题
$ kubectl get pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
hq-storage-u4 10Ti RWX Retain Released my-ns/pv-50g 49m
然后我尝试创建 PersistentVolumeClaim:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-50gb
namespace: my-ns
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
Kubectl 显示 pvc 状态为 Pending
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
pvc-50gb Pending 16m
当我尝试将卷添加到部署时,出现错误:
[SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "pvc-50gb", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "pvc-50gb", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "pvc-50gb", which is unexpected.]
如何让 pvc 进入工作状态?
我无法对您的 post 发表评论,所以我将尝试回答这个问题。
当 PVC 在我的 NFS 集群上不工作时,我遇到了 2 种错误。安装PV通常会成功,所以提供的状态信息就不多说了。
- PV和PVC的annotation和spec不一样。看起来不是这样的。
- 使用NFS资源的pod节点无法挂载该资源。在应该挂载 NFS 资源的节点上尝试
mount -t nfs 10.30.136.79:/data/u4 /mnt
。这应该会成功。如果失败,可能是- 缺少挂载权限。在您的 NFS 服务器中纠正
/etc/exports
。 - 防火墙阻止了 NFS 端口。修复防火墙。
- 缺少挂载权限。在您的 NFS 服务器中纠正
还有一点,pod 中的非特权用户可能无法写入 NFS 资源。 pod 中 NFS 用户的 uid/gid 必须匹配 NFS 资源的权限。
好机会!
原来我需要把IP(我也把路径)放在引号里。修复后,pvc状态为Bound,pod可以正确挂载