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

K8s hostPath挂载Pod后仅显示单个文件,新增文件无法同步

问题原因及解决方案

核心问题:Pod被调度到了非文件所在节点

hostPath卷挂载的是Pod运行所在节点的本地目录,而非固定指向主节点目录。如果你的K8s集群包含多个节点,且Deployment未指定调度规则,K8s可能会将Pod调度到其他节点,这些节点的/home/user/vids/目录中并没有你后续新增的视频文件,因此重启Pod后依然看不到新增内容。

排查步骤

  1. 确认Pod运行的节点:

    kubectl get pods -o wide
    

    查看输出的NODE列,确认该节点是否为你存放视频文件的主节点。

  2. 验证节点目录内容:
    如果Pod不在主节点,登录到Pod所在节点,检查/home/user/vids/目录下的文件,会发现这里只有初始的sample-vid-1.mp4,没有后续新增文件。

解决方法

给Deployment添加节点亲和性规则,强制Pod只能调度到存放视频文件的主节点:
修改deployment.yaml,在spec.template.spec下添加affinity配置:

kind: Deployment
metadata:
  name: app1
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app1
  template:
    metadata:
      labels:
        app: app1
    spec:
      # 添加节点亲和性配置
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - 你的主节点主机名 # 替换为实际主节点的hostname
      containers:
      - name: app1
        image: userhere/getting-started
        ports:
        - containerPort: 80
        volumeMounts:
        - name: video-storage
          mountPath: /app/video
      volumes:
      - name: video-storage
        hostPath:
          path: /home/user/vids/

应用更新后的Deployment:

kubectl apply -f deployment.yaml

新创建的Pod会被调度到指定主节点,此时就能看到所有新增的视频文件。

额外检查项

如果Pod确实在主节点但仍看不到新增文件,检查以下内容:

  • 确认新增文件确实被放入主节点的/home/user/vids/目录,未放错路径
  • 检查目录权限:主节点的/home/user/vids/需允许容器用户读取,执行ls -ld /home/user/vids/查看权限,确保其他用户有读权限(如权限为755)

内容的提问来源于stack exchange,提问作者that-parikshit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:28:25