我有多节点kubernetes设置。我正在尝试使用带有NFS卷插件的存储类动态分配持久卷。 我找到了glusterfs,aws-ebs等的存储类示例。但是,我没有找到任何NFS示例。 如果我只创建PV和PVC,那么NFS工作得很好(没有存储类)。 我试图通过引用其他插件为NFS编写存储类文件。请参考下面的内容,
NFS-存储class.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
namespace: kube-system
name: my-storage
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
labels:
kubernetes.io/cluster-service: "true"
provisioner: kubernetes.io/nfs
parameters:
path: /nfsfileshare
server: <nfs-server-ip>
NFS-PV-claim.yaml
apiVersion: v1
metadata:
name: demo-claim
annotations:
volume.beta.kubernetes.io/storage-class: my-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
它没有奏效。所以,我的问题是,我们可以为NFS编写存储类吗?它是否支持动态提供?
答案 0 :(得分:2)
我正在考虑做同样的事情。我找到了https://github.com/kubernetes-incubator/external-storage/tree/master/nfs,我认为你是基于你的供应商吗?
我认为nfs提供程序需要在定义的路径下创建一个唯一的目录。我不确定如何做到这一点。
也许这对kubernetes repo的github问题更好。
答案 1 :(得分:2)
使用NFS进行动态存储配置不起作用,最好使用glusterfs。有一个很好的教程,在设置时修复了常见问题。 http://blog.lwolf.org/post/how-i-deployed-glusterfs-cluster-to-kubernetes/
答案 2 :(得分:2)
截至2020年8月,这就是在Kubernetes上寻找NFS持久性的方式:
您可以
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
nfs:
path: /foo/bar
server: wherever.dns
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0003
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /tmp
server: 172.17.0.2
external-storage
中的NFS PV provisioner(现已弃用)。这是两年前的最新更新,已经正式停产,祝您好运。使用此路由,您可以创建一个存储类,例如以下一种,以从您的NFS服务器实现PVC。
kubernetes-sigs/nfs-subdir-external-provisioner
!,它的工作方式与旧的nfs-client
预配置器相似,但功能更强大-至今。晕!kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: example-nfs
provisioner: example.com/nfs
mountOptions:
- vers=4.1
master
上,但尚未发布)。external-storage
的NFS设置程序。在研究此问题时,例如,我偶然发现了a provisioner written by someone on GitHub,。这样的供应商执行得好还是具有与external-storage
中已弃用的无替换供应商相同的功能,但我确实存在。答案 3 :(得分:1)
StorageClass
的目的是创建存储,例如来自云提供商(或#34; Provisioner&#34;他们在kubernetes文档中称之为)。对于NFS,您只希望访问到现有存储,并且不涉及创建。因此,您不需要StorageClass
。请参阅此blog。
答案 4 :(得分:0)
我还尝试在kubernetes群集上启用NFS设置程序,起初它不起作用,因为快速入门指南没有提到您也需要应用rbac.yaml(我打开了{{3} }来解决此问题。
如果我在群集上执行以下步骤,则nfs设置程序对我来说工作正常: PR
$ kubectl create -f deploy/kubernetes/deployment.yaml
$ kubectl create -f deploy/kubernetes/rbac.yaml
$ kubectl create -f deploy/kubernetes/class.yaml
然后,您应该能够像这样创建PVC:
$ kubectl create -f deploy/kubernetes/claim.yaml
您可能要更改deployment.yaml
中用于卷挂载的文件夹,以使其与群集匹配。