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

CronJob设readOnlyRootFilesystem后遇只读文件系统及文件找不到问题

问题分析与解决方案

问题根源

你设置readOnlyRootFilesystem: true后,将emptyDir挂载到了程序所在的/opt/ibm/common-pool-cronjob/目录——这个操作会直接覆盖镜像中原先存放在该目录下的所有文件(包括你要运行的text.py),因为emptyDir初始状态是空的,所以程序会报找不到文件的错误。

解决方法

方法一:挂载emptyDir到程序实际需要写入的子目录

找到Python程序真正需要写入的具体子路径(比如日志目录、临时文件目录,例如/opt/ibm/common-pool-cronjob/tmp),仅将emptyDir挂载到这个子目录,既满足读写需求,又不会覆盖原程序文件。

修改后的配置片段:

volumeMounts:
  # 只挂载到需要写入的子目录
  - mountPath: /opt/ibm/common-pool-cronjob/tmp
    name: tmp-volume
volumes:
  - emptyDir: {}
    name: tmp-volume

方法二:调整程序写入路径到默认可写目录

多数容器环境中/tmp目录默认允许写入(即使根文件系统只读),你可以修改Python程序的配置,让它把需要写入的内容放到/tmp下,无需额外挂载卷到程序目录。

方法三:用init容器复制原目录文件到emptyDir(适合必须挂载整个目录的场景)

如果确实需要让整个/opt/ibm/common-pool-cronjob/具备读写权限,可以通过init容器先将镜像里的程序文件复制到emptyDir,再让主容器使用这个卷:

containers:
  - env:
      - name: ENV_VAR
        value: value
      - name: MAINTAIN_HA_POOL
        value: "true"
      - name: PROCESS_SCHEDULER_REQUESTS
        value: "true"
      - name: MAINTAIN_NODE_POOL
        value: "false"
      - name: ENABLE_LSV3
        value: "false"
    image: us.icr.io/nz-cloud/nzsaas-common-pool-cronjob:master-2.1.2.0-20240329-111245
    imagePullPolicy: Always
    name: common-machine-pool-cronjob-container
    resources: {}
    securityContext:
      privileged: true
      readOnlyRootFilesystem: true
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
      - mountPath: /opt/ibm/common-pool-cronjob/
        name: tmp-volume
# 添加init容器负责复制文件
initContainers:
  - name: copy-app-files
    image: us.icr.io/nz-cloud/nzsaas-common-pool-cronjob:master-2.1.2.0-20240329-111245
    command: ["sh", "-c", "cp -r /opt/ibm/common-pool-cronjob/. /tmp/app/"]
    volumeMounts:
      - mountPath: /tmp/app
        name: tmp-volume
volumes:
  - emptyDir: {}
    name: tmp-volume

内容的提问来源于stack exchange,提问作者Frozen Shot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:33:27