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

Kubernetes:如何将主节点特定目录挂载到集群所有Pod?

解决方案:将主节点目录挂载到集群所有Pod

因为要让任意节点上的Pod都能访问主节点的目录,不能用hostPath(hostPath只能访问Pod所在节点的本地目录),最适合树莓派集群的方案是用NFS网络共享,步骤如下:

1. 在主节点配置NFS服务器

  • 安装NFS服务:
    sudo apt update && sudo apt install nfs-kernel-server -y
    
  • 编辑NFS共享配置文件:
    sudo nano /etc/exports
    
    添加以下内容(替换成你的集群网段,比如192.168.1.0/24):
    /media/usb/test 192.168.x.0/24(rw,sync,no_subtree_check,no_root_squash)
    
    • rw:授予读写权限
    • no_root_squash:允许客户端的root用户拥有共享目录的root权限(测试环境必备,避免权限冲突)
  • 重启NFS服务生效:
    sudo systemctl restart nfs-kernel-server
    

2. 在所有集群节点安装NFS客户端

主节点和两个工作节点都需要安装NFS客户端,才能挂载共享目录:

sudo apt update && sudo apt install nfs-common -y

3. 修改Deployment配置挂载NFS目录

有两种实现方式,可根据需求选择:

方式一:用PV+PVC挂载(规范易复用)

先创建PersistentVolume(PV)文件test-nfs-pv.yaml:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: test-nfs-pv
spec:
  capacity:
    storage: 10Gi # 根据U盘实际容量调整
  accessModes:
    - ReadWriteMany # 支持多节点同时读写
  nfs:
    server: 192.168.x.x # 替换成主节点树莓派IP
    path: /media/usb/test

创建PV:

kubectl apply -f test-nfs-pv.yaml

再创建PersistentVolumeClaim(PVC)文件test-nfs-pvc.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi # 和PV容量保持一致

创建PVC:

kubectl apply -f test-nfs-pvc.yaml

最后修改你的Deployment配置,添加卷和挂载规则:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      terminationGracePeriodSeconds: 5
      volumes:
      - name: test-nfs-volume
        persistentVolumeClaim:
          claimName: test-nfs-pvc # 关联已创建的PVC
      containers:
      - name: test
        image: rpi.home:5000/test
        volumeMounts:
        - name: test-nfs-volume # 和volumes内的名称对应
          mountPath: /mnt/test # 挂载到Pod内的目标目录

更新Deployment:

kubectl apply -f test-deploy.yaml

方式二:直接在Deployment里配置NFS卷(简洁快速)

如果不需要复用存储配置,可直接在Deployment中指定NFS信息,省去PV/PVC步骤:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      terminationGracePeriodSeconds: 5
      volumes:
      - name: test-nfs-volume
        nfs:
          server: 192.168.x.x # 替换成主节点IP
          path: /media/usb/test
      containers:
      - name: test
        image: rpi.home:5000/test
        volumeMounts:
        - name: test-nfs-volume
          mountPath: /mnt/test

更新Deployment:

kubectl apply -f test-deploy.yaml

验证与注意事项

  • 测试挂载:进入任意Pod,在/mnt/test目录创建文件,回到主节点的/media/usb/test目录确认文件同步
  • 防火墙设置:主节点需开放NFS相关端口(默认2049/tcp、111/tcp),测试环境可临时关闭防火墙:sudo systemctl stop ufw
  • 目录权限:主节点/media/usb/test目录权限需足够,测试环境可设置为chmod 777 /media/usb/test避免权限问题

内容的提问来源于stack exchange,提问作者nagy.zsolt.hun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:17:50