NFS动态存储卷

    • 系统要求:CentOS

    NFS 允许系统将其目录和文件共享给网络上的其他系统。通过 NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。

    • 在集群每一个节点安装
    • 创建共享目录
    1. mkdir -p /u01/prod
    • 编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:
    1. NFS共享目录路径 客户机IP段(参数1,参数2,...,参数n)
    • 例如:
    1. /u01 192.168.1.1/16(rw,sync,insecure,no_subtree_check,no_root_squash)
    • 注1:尽量指定IP段最小化授权可以访问NFS 挂载的资源的客户端
    • 注2:经测试参数insecure必须要加,否则客户端挂载出错mount.nfs: access denied by server while mounting
    • 配置完成后,您可以在终端提示符后运行以下命令来启动 NFS 服务器:
    1. sudo systemctl enable nfs-server
    2. sudo systemctl start nfs-server
    • 到客户机上执行showmount命令进行检查
    1. helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
    • 在集群每一个节点安装nfs-utils
    1. sudo yum install -y nfs-utils
    • 在任意一个master节点执行下面helm命令,安装nfs-client-provisioner
    1. helm install c7n/nfs-client-provisioner \
      --set rbac.create=true \
      --set persistence.enabled=true \
      --set storageClass.name=nfs-provisioner \
    2. --set persistence.nfsServer=127.0.0.1 \
    1. --set persistence.nfsPath=/u01/prod \

    提供NFS服务的主机IP地址或域名

    • 新建文件,粘贴以下内容:
    1. kind: Pod
    2. apiVersion: v1
    3. metadata:
    4. name: write-pod
    5. spec:
    6. containers:
    7. - name: write-pod
    8. image: busybox
    9. command:
    10. - "/bin/sh"
    11. args:
    12. - "-c"
    13. volumeMounts:
    14. - name: nfs-pvc
    15. mountPath: "/mnt"
    16. restartPolicy: "Never"
    17. volumes:
    18. - name: nfs-pvc
    19. claimName: myclaim
    20. ---
    21. kind: PersistentVolumeClaim
    22. apiVersion: v1
    23. metadata:
    24. name: myclaim
    25. spec:
    26. accessModes:
    27. - ReadWriteOnce
    28. storageClassName: nfs-provisioner
    29. resources:
    30. requests:
    31. storage: 1Mi
    • 部署测试用例
    1. kubectl apply -f write-pod.yaml
    • 验证是否正常
    1. $ kubectl get po
    2. NAME READY STATUS RESTARTS AGE
    3. write-pod 0/1 Completed 0 8s

    pod状态为Completed则为正常,若长时间为ContainerCreating状态则为不正常,请确认安装操作步骤是否正确。