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

Kubernetes配置readOnlyRootFilesystem后容器退出码137如何解决

问题诊断与解决方案

现有配置的问题

  • 缺失应用所需可写路径的临时存储配置:绝大多数Web应用运行时需要向/tmp(临时文件)、/var/run(进程pid、socket文件)、/var/log(运行日志)等路径写入数据,开启readOnlyRootFilesystem: true后根路径全部为只读状态,应用写入失败直接崩溃,触发异常退出。
  • AppArmor规则过于严格:你配置的deny /** wl规则会拦截所有路径的写入操作,即使挂载了可写存储也会被规则拦截,同样会导致启动失败。
  • PSP配置失效:AKS 1.21及以上版本已正式弃用Pod Security Policy(PSP),替换为Pod Security Admission(PSA),所以集群级PSP配置不会生效。

补充说明:退出码137也有可能是进程OOM被内核杀死,你现有配置只加了CPU限制,没有配置内存限制,也可以同步排查内存占用问题

正确配置方案

1. 确认应用写入路径

先临时关闭只读根文件系统配置启动容器,进入容器排查运行时需要写入的所有目录路径,除了通用的/tmp、/var/run、/var/log外,部分应用还有专属的缓存、临时数据目录,需要一并纳入配置。

2. 挂载临时可写存储

使用基于内存的emptyDir为需要写入的目录提供临时可写空间,数据会随容器销毁自动清除,符合运行不可信代码的安全要求,参考Deployment配置如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: parser-deployment
spec:
  replicas: 5
  selector:
    matchLabels:
      app: parser
  template:
    metadata:
      labels:
        app: parser
    spec:
      containers:
      - name: parser
        image: parser.azurecr.io/parser:latest
        ports:
        - containerPort: 80
        - containerPort: 443
        resources:
          limits:
            cpu: "1.20"
            memory: "1Gi" # 新增内存限制,避免OOM导致137退出
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true # 额外安全配置,禁止root用户运行
          allowPrivilegeEscalation: false # 禁止权限提升
        volumeMounts:
        # 根据你实际排查到的写入路径调整挂载列表
        - name: tmp
          mountPath: /tmp
        - name: run
          mountPath: /var/run
        - name: log
          mountPath: /var/log
      volumes:
      - name: tmp
        emptyDir:
          medium: Memory
          sizeLimit: 100Mi
      - name: run
        emptyDir:
          medium: Memory
          sizeLimit: 50Mi
      - name: log
        emptyDir:
          medium: Memory
          sizeLimit: 200Mi

3. 调整安全规则

  • 移除AppArmor配置中的deny /** wl规则,保留其他基础安全限制即可,readOnlyRootFilesystem已经可以保证根文件系统永久只读,挂载的临时存储为非持久化存储,不会有持久化写入风险。
  • 如果需要集群级强制只读根文件系统限制,在AKS集群中启用Pod Security Admission,给对应业务命名空间配置restricted级别的Pod安全标准,即可强制所有Pod必须符合只读根文件系统、非root运行等安全要求。

内容的提问来源于stack exchange,提问作者Georgi Yankov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:15:03