1 介绍
NFS 客户端配置器是 Kubernetes 的自动配置器,它使用已经配置的 NFS 服务器,自动创建持久卷,从而为其它应用提供持久化存储。自动创建的持久卷在nfs的根目录下存储形式为:${namespace}-${pvcName}-${pvName}。
本文通过helm部署nfs-client,并为minio 提供持久化存储。后续会在此处持续更新 nfs-client-provisioner 相关的使用方式和注意事项。
2 部署测试
2.1 使用helm
- 部署nfs-client
详细参数可以参考 githu stable/nfs-client-provisioner搭建nfs服务器: # cat /etc/exports |grep data /data/nfs *(insecure,rw,sync,fsid=0,crossmnt,no_subtree_check) /etc/init.d/nfs-kernel-server restart # 部署nfs-client helm install nfs-client stable/nfs-client-provisioner --set nfs.server=192.168.1.4 --set nfs.path=/data/nfs 或者在https://github.com/helm/charts 下载repo文件,解压出 stable/nfs-client-provisioner目录 helm install nfs-client nfs-client-provisioner/ --set nfs.server=192.168.1.4 --set nfs.path=/data/nfs 安装成功后可以正常get sc: $ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE nfs-client cluster.local/nfs-client-nfs-client-provisioner Delete Immediate true 11m
- 测试
笔者使用新建的nfs-client 为mino分配动态存储,minio 部署方法见博文:minio笔记3–基于k8s搭建minio集群
nfs-client 和 minio 部署成功后,可以看到已经有了SC nfs-client 且动态生成了pvc,如下图:
sc:
pvc:
pv:
在物理机的nfs 目录下也生成了对应的存储目录,如下图所示:
综上,nfs-client 已经成功部署,且达到了应有的效果。
2.2 使用案例
本案例中基于nfs-client创建pvc, 然后将其挂载到busybox中。
vim pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-claim
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 102Mi
vim busybox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: busybox-pvc
name: busybox-pvc
spec:
replicas: 1
selector:
matchLabels:
app: busybox-pvc
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: busybox-pvc
spec:
containers:
- image: busybox:1.31
name: busybox
command: [sh, -c, "sleep infinity"]
volumeMounts:
- name: data-nfs
mountPath: /data-nfs
resources: {}
volumes:
- name: data-nfs
persistentVolumeClaim:
claimName: test-claim
status: {}
# kubectl apply -f pvc.yaml
# kubectl apply -f busybox.yaml
在busybox 终端中写入几个数据文件,可以发现已经正常挂载了nfs目录:
3 注意事项
- to add
4 说明
软件环境:
k8s 版本: 1.19.4
nfs-client-provisioner chart版本:stable/nfs-client-provisioner:1.2.11
参考文档:
1 github external-storage/tree/master/nfs-client
2 github stable/nfs-client-provisioner
3 k8s中创建nfs存储类(公共盘)