
dyrnq/nfspluginregistry.k8s.io/sig-storage/nfsplugin是由Kubernetes SIG Storage(存储特别兴趣小组)维护的官方NFS存储插件镜像。该镜像实现了Kubernetes容器存储接口(CSI)规范,用于在Kubernetes集群中管理NFS(网络文件系统)类型的持久卷(Persistent Volume, PV),提供NFS存储与Kubernetes生态的无缝集成能力。
nfs-common或nfs-utils)的Linux节点该插件通常以DaemonSet方式部署在Kubernetes集群的所有节点或指定节点上,确保每个节点均可处理NFS卷操作。典型部署流程如下:
yaml# rbac.yaml apiVersion: v1 kind: ServiceAccount metadata: name: nfs-provisioner namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: nfs-provisioner-runner rules: - apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "delete"] - apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch"] - apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] verbs: ["create", "update", "patch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: run-nfs-provisioner subjects: - kind: ServiceAccount name: nfs-provisioner namespace: kube-system roleRef: kind: ClusterRole name: nfs-provisioner-runner apiGroup: rbac.authorization.k8s.io
yaml# daemon-set.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: nfs-plugin namespace: kube-system spec: selector: matchLabels: app: nfs-plugin template: metadata: labels: app: nfs-plugin spec: serviceAccountName: nfs-provisioner containers: - name: nfs-plugin image: registry.k8s.io/sig-storage/nfsplugin:latest args: - --v=2 - --csi-address=/csi/csi.sock volumeMounts: - name: csi-socket-dir mountPath: /csi - name: nfs-client-root mountPath: /var/lib/kubelet/pods mountPropagation: Bidirectional volumes: - name: csi-socket-dir hostPath: path: /var/lib/kubelet/plugins/nfs.csi.k8s.io type: DirectoryOrCreate - name: nfs-client-root hostPath: path: /var/lib/kubelet/pods type: Directory
| 参数名 | 描述 | 默认值 | 可选值 |
|---|---|---|---|
NFS_SERVER | NFS服务器地址 | 无(必填) | 有效的IP地址或域名 |
NFS_PATH | NFS服务器共享根路径 | 无(必填) | NFS服务器上的共享目录路径 |
NFS_VER | NFS协议版本 | 3 | 3, 4 |
MOUNT_OPTIONS | NFS挂载选项 | 无 | 逗号分隔的挂载参数(如vers=4,sec=sys) |
| 参数 | 描述 | 默认值 |
|---|---|---|
--v | 日志详细程度 | 2(取值范围:0-5,值越大日志越详细) |
--csi-address | CSI socket文件路径 | /csi/csi.sock |
--leader-election | 是否启用leader选举 | true |
--timeout | 卷操作超时时间(秒) | 30 |
yaml# static-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-static-pv spec: capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: nfs.csi.k8s.io volumeHandle: nfs-static-pv-001 # 唯一标识,建议使用UUID volumeAttributes: server: 192.168.1.100 # NFS服务器地址 share: /data/nfs-share # NFS共享路径 vers: "4" # NFS协议版本 mountOptions: "sec=sys,rw" # 挂载选项
yaml# storageclass.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-sc provisioner: nfs.csi.k8s.io parameters: server: 192.168.1.100 # NFS服务器地址 share: /data/nfs-root # NFS共享根路径 vers: "3" # NFS协议版本 mountOptions: "vers=3,soft" # 全局挂载选项 reclaimPolicy: Delete # 卷回收策略(Delete/Retain) volumeBindingMode: Immediate # 卷绑定模式 allowVolumeExpansion: false # 是否支持卷扩容
yaml# pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: nfs-sc # 关联上述StorageClass
节点依赖:确保所有Kubernetes节点已安装NFS客户端工具(Debian/Ubuntu:nfs-common;RHEL/CentOS:nfs-utils),否则会导致挂载失败
网络互通:NFS服务器需与Kubernetes节点网络互通,且防火墙需开放NFS服务端口(NFSv3:111、2049、随机端口;NFSv4:2049)
权限配置:NFS服务器共享目录需配置适当权限(如no_root_squash或指定用户ID),避免Pod挂载后权限不足
版本匹配:镜像版本需与Kubernetes集群版本匹配(建议使用与集群版本相同的插件版本,如Kubernetes v1.24对应插件v4.0+)
数据安全:NFS存储本身不提供数据冗余能力,生产环境建议结合NFS服务器的RAID或备份策略保障数据安全






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务