You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s Pod挂载NFS共享失败求助:rpc.statd未运行报错

解决K8s Pod挂载NFS时rpc.statd未运行的报错

核心原因

K8s的NFS卷挂载操作由节点操作系统负责处理,而非容器内部进程。因此在容器内启动rpcbind无法解决问题,必须确保每个K8s节点上的rpcbind和rpc-statd服务正常运行。

解决方案

方案1:在所有K8s节点上部署rpc服务

根据节点的操作系统类型执行以下操作:

  • Debian/Ubuntu系统:
    sudo apt-get update && sudo apt-get install -y rpcbind nfs-common
    sudo systemctl enable --now rpcbind statd
    
  • RHEL/CentOS/Rocky系统:
    sudo yum install -y rpcbind nfs-utils
    sudo systemctl enable --now rpcbind nfs-lock
    

方案2:添加NFS挂载参数绕过远程锁(无节点权限时使用)

如果是托管K8s集群无法操作节点,可以修改Deployment的NFS卷配置,添加nolock选项禁用远程锁:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nfs-client-provisioner
spec:
  selector:
    matchLabels:
      app: nfs-client-provisioner
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: gcr.io/k8s-staging-sig-storage/nfs-subdir-external-provisioner:v4.0.0
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: nfs-provisioner
            - name: NFS_SERVER
              value: <NFS IP>
            - name: NFS_PATH
              value: /filesharepath
      volumes:
        - name: nfs-client-root
          nfs:
            server: <NFS IP>
            path: /filesharepath
            # 添加nolock挂载选项
            mountOptions:
              - nolock

注意:nolock会让文件锁仅在容器本地生效,多Pod并发读写同一NFS文件时可能引发数据一致性问题,仅适合单Pod或无并发写的场景。

验证操作

  1. 在节点上执行rpcinfo -p <NFS IP>,确认能查询到NFS相关的RPC服务
  2. 重启Deployment使配置生效:
    kubectl rollout restart deployment nfs-client-provisioner
    

内容的提问来源于stack exchange,提问作者Sujith Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:24:18