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

非root用户部署Kubernetes ActiveMQ时无法修改挂载卷文件

问题分析与解决办法

从报错日志Unable to set last modified date for file [/tmp/jetty-.../index_jsp.java]可以明确:Jetty编译JSP页面时需要修改/tmp目录下的文件元数据,但当前挂载的Azure文件共享不支持该操作,或挂载配置存在兼容性问题,导致Web控制台的管理页面无法加载。

以下是具体调整方案:

1. 替换/tmp的挂载方式

Azure文件共享作为临时目录使用时,存在文件系统特性兼容问题,建议改用Kubernetes的emptyDir作为/tmp存储——它是节点本地临时存储,完全支持Linux文件系统的所有操作:

# 修改Deployment的volumes部分,替换原log-writing-folder-tmp配置
volumes:
  - name: log-writing-folder
    csi:
      driver: file.csi.azure.com
      volumeAttributes:
        shareName: "mnt"
        secretName: seq-secret
        mountOptions: "dir_mode=0777,file_mode=0777,cache=strict,actimeo=30" 
  - name: log-writing-folder-tmp
    emptyDir: {}  # 替换为emptyDir临时存储

2. 优化挂载权限配置

确保挂载目录显式声明可写权限,同时匹配安全上下文的用户权限:

# 修改container下的volumeMounts配置
volumeMounts:
  - name: log-writing-folder
    mountPath: /opt/apache-activemq-5.16.6/data
    readOnly: false
  - name: log-writing-folder-tmp
    mountPath: /tmp
    readOnly: false

3. 可选:调整ActiveMQ临时目录到共享存储

若必须使用Azure文件共享存储临时文件,可将ActiveMQ的临时目录迁移到已挂载的/opt/apache-activemq-5.16.6/data目录下:

# 在Deployment的env中修改临时目录配置
env:
  - name: ACTIVEMQ_TMP
    value: "/opt/apache-activemq-5.16.6/data/tmp"

同时在Dockerfile中提前创建该目录(确保以myuser身份执行):

USER ${UID}
RUN mkdir -p /opt/apache-activemq-5.16.6/data/tmp

4. 建议:切换Azure文件共享协议

若坚持使用Azure文件共享,建议将SMB协议切换为NFS协议——NFS对Linux文件系统特性的支持更完善,可避免元数据修改受限问题。

验证步骤

  1. 应用修改后的Deployment配置:kubectl apply -f your-deployment.yaml
  2. 查看Pod日志,确认不再出现Unable to set last modified date报错
  3. 访问Web控制台的/admin页面,检查功能是否正常加载

内容的提问来源于stack exchange,提问作者Deb S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:30:00