Mikey689 2023-09-23 20:57 采纳率: 0%
浏览 2

kubernetes容器卷挂载成功,但是没数据?

这几天在本地用k8s部署项目,遇到一个十分奇怪的问题。
就是通过容器卷将宿主机的数据挂载到容器里面。就是我挂载成功了,容器始终没有数据,只有一个空的目录。
我尝试了各种的办法,例如目录权限问题,type类型等都没有解决。这是github上的一个参考代码https://github.com/pjmagee/fleet-infra/blob/main/charts/orchardcorecms/values.yaml

我的本地环境是windows11,然后用wsl2安装的ubuntu-22.04,然后用的docker桌面版,里面开启了k8s集群。
编辑器用的vscode,大概就是这些工具,然后不管我挂载windows下的文件,还是ubuntu-22.04下的文件,容器里面都没有数据。

以下是我的代码部分,项目是部署一个cms项目,orchard-core,需要将App_Data传入进去。


# 容器内挂载目录
volumeMounts:
  name: appdata
  mountPath: /app/App_Data

#宿主机
volumes:
  - name: appdata
    hostPath:
      path: /GitSource/Ai4C-Portal-Backend-3/Ai4C-Portal-Backend-3/services/headlesscms/Ai4C.Portal.HeadlessCmsService/  #宿主机路径  绝对路径(这里试过用linux里面的路径也不行 ,例如:/home/mikey/work/App_Data)
      type: Directory

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-23 22:27
    关注

    【以下回答由 GPT 生成】

    问题分析: 从问题描述来看,您在使用Kubernetes部署项目时遇到了一个容器卷挂载成功但没有数据的问题。您尝试了各种方法来解决,但问题仍未解决。您提供了一部分代码,其中涉及到卷的挂载配置。

    解决方案: 1. 检查文件路径是否正确:首先,需要确保宿主机上的文件路径是正确的。您可以通过在宿主机命令行窗口中尝试访问该路径来验证。例如,在Windows下,在CMD或PowerShell中执行以下命令:

    dir /GitSource/Ai4C-Portal-Backend-3/Ai4C-Portal-Backend-3/services/headlesscms/Ai4C.Portal.HeadlessCmsService/
    

    在Ubuntu下,在终端中执行以下命令:

    ls /GitSource/Ai4C-Portal-Backend-3/Ai4C-Portal-Backend-3/services/headlesscms/Ai4C.Portal.HeadlessCmsService/
    

    确保您可以看到目标文件夹中的文件列表。如果没有,请检查路径是否正确,并确保您有足够的权限来访问该路径。

    1. 检查目录权限:确保您在挂载目录的权限设置正确。这主要包括两个方面:

    2. 宿主机目录的权限:请确保您可以在宿主机上读取和写入该目录的权限。可以使用以下命令更改目录权限:

      chmod 777 /GitSource/Ai4C-Portal-Backend-3/Ai4C-Portal-Backend-3/services/headlesscms/Ai4C.Portal.HeadlessCmsService/

    3. 容器挂载目录的权限:在部署配置文件中,您可以设置容器挂载点的权限,以确保容器能够读取和写入该目录。您可以将volumeMounts部分的subPath字段添加到您的部署配置中,如下所示:

      yaml volumeMounts: - name: appdata mountPath: /app/App_Data subPath: Ai4C.Portal.HeadlessCmsService

      这将让容器只挂载指定的子目录而不是整个目录。

    4. 检查文件所有者和组:确保宿主机上的文件所有者和组与容器内的用户匹配。您可以使用以下命令更改宿主机目录的所有者和组:

    chown -R <container-user>:<container-group> /GitSource/Ai4C-Portal-Backend-3/Ai4C-Portal-Backend-3/services/headlesscms/Ai4C.Portal.HeadlessCmsService/

    替换<container-user><container-group>为容器内的用户和组。这样做可以确保容器可以正确访问挂载的目录。

    1. 验证Kubernetes部署配置:确保在Kubernetes部署文件中正确设置了卷的挂载配置。您可以尝试执行以下命令来验证部署配置:

    kubectl describe deployment <deployment-name>

    替换<deployment-name>为您的部署的名称。在输出中,找到您的容器的挂载配置,并确保挂载的卷名称和路径与您的期望一致。

    如果您仍然遇到问题,请提供更多的信息,例如相关的日志信息,以便我们能够更好地帮助您解决问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月23日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址