Kubernetes NFS PersistentVolumeClaim的状态待定

时间:2017-06-14 23:46:46

标签: docker kubernetes nfs

我正在尝试将我的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状态为待定

$ 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进入工作状态?

2 个答案:

答案 0 :(得分:1)

原来我需要把IP(我也把路径)放在引号中。修复之后,pvc进入状态Bound,并且pod可以正确安装。

答案 1 :(得分:0)

我无法对您的帖子发表评论,所以我只是试图回答这个问题。

当我的NFS群集上的PVC无法正常工作时,我遇到了两种错误。安装PV通常会成功,因此提供的状态信息并不多见。

  1. PV和PVC的注释和规格不同。这看起来并非如此。
  2. 使用NFS资源的pod的节点无法装入资源。在应该挂载NFS资源的节点上尝试mount -t nfs 10.30.136.79:/data/u4 /mnt。这应该成功。如果失败了,那可能就是
    1. 缺少装载权限。在NFS服务器中纠正/etc/exports
    2. 阻止NFS端口的防火墙。修复防火墙。
  3. 还有一件事,pod中的非特权用户可能无法写入NFS资源。 pod中NFS用户的uid / gid必须与NFS资源的perms相匹配。

    Bonne chance!