k8s笔记13--配置nfs-client-provisioner

Posted 昕光xg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s笔记13--配置nfs-client-provisioner相关的知识,希望对你有一定的参考价值。


k8s笔记13--配置nfs-client-provisioner

1 介绍

NFS 客户端配置器是 Kubernetes 的自动配置器,它使用已经配置的 NFS 服务器,自动创建持久卷,从而为其它应用提供持久化存储。自动创建的持久卷在nfs的根目录下存储形式为:$namespace-$pvcName-$pvName。

本文通过helm部署nfs-client,并为minio 提供持久化存储。后续会在此处持续更新 nfs-client-provisioner 相关的使用方式和注意事项。

2 部署测试

2.1 使用helm

  1. 部署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
  1. 测试
    笔者使用新建的nfs-client 为mino分配动态存储,minio 部署方法见博文:​​​minio笔记3–基于k8s搭建minio集群​​​ nfs-client 和 minio 部署成功后,可以看到已经有了SC nfs-client 且动态生成了pvc,如下图:
    sc:
  2. k8s笔记13--配置nfs-client-provisioner_配置nfs-client

  3. pvc:
  4. k8s笔记13--配置nfs-client-provisioner_kubernetes_02

  5. pv:
  6. k8s笔记13--配置nfs-client-provisioner_StorageClass_03

  7. 在物理机的nfs 目录下也生成了对应的存储目录,如下图所示:
  8. k8s笔记13--配置nfs-client-provisioner_kubernetes_04

  9. 综上,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目录:

k8s笔记13--配置nfs-client-provisioner_nfs-client_05

3 注意事项

  1. 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存储类(公共盘)​


以上是关于k8s笔记13--配置nfs-client-provisioner的主要内容,如果未能解决你的问题,请参考以下文章

k8s学习笔记

关于K8s集群环境工作组隔离配置多集群切换的一些笔记

关于K8s集群环境工作组隔离配置多集群切换的一些笔记

k8s用 ConfigMap 管理配置(13)

关于K8s中资源配置范围管理(LimitRange)的一些笔记

k8s使用ConfigMap配置mysql和nginx (13)