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

AKS中以非Root用户部署Splunk OTEL Collector时Init容器权限问题解决

解决Splunk OTEL Collector DaemonSet在AKS的权限问题

针对你遇到的非Root用户+只读根文件系统导致Init容器无法修改ACL的问题,有以下几种可行的配置方案:

方案1:给Init容器单独配置Root权限

因为Init容器只负责初始化操作(修改ACL、迁移checkpoint),完成后就会退出,不会长期运行,所以可以单独给这两个Init容器设置Root权限,主容器依然保持非Root和只读根文件系统,符合安全政策。

在Helm values.yaml中添加如下配置:

agent:
  # 给patch-log-dirs和migrate-checkpoint这两个Init容器配置Root权限
  initContainers:
    patchLogDirs:
      securityContext:
        runAsUser: 0
        allowPrivilegeEscalation: false
    migrateCheckpoint:
      securityContext:
        runAsUser: 0
        allowPrivilegeEscalation: false
  # 主容器保持非Root+只读根文件系统
  containerSecurityContext:
    runAsUser: 20000
    runAsNonRoot: true
    readOnlyRootFilesystem: true

方案2:提前在节点上配置好日志目录权限

如果完全不允许任何容器以Root运行,可以通过AKS节点池的自定义启动脚本,提前给目标日志目录设置好ACL,让Splunk OTEL Collector使用的20000用户拥有读写权限,然后禁用自动生成的Init容器。

  1. 给AKS节点池添加启动脚本,执行以下命令:
setfacl -R -m u:20000:rwx /var/log/pods
setfacl -R -m u:20000:rwx /var/log/containers
  1. 在Helm values.yaml中禁用Init容器:
agent:
  patchLogDirs:
    enabled: false
  migrateCheckpoint:
    enabled: false
  containerSecurityContext:
    runAsUser: 20000
    runAsNonRoot: true
    readOnlyRootFilesystem: true

方案3:用PVC挂载日志目录

将需要修改权限的日志目录挂载到PersistentVolumeClaim中,提前在PVC里设置好20000用户的读写权限,这样Init容器不需要操作节点上的目录,只需要处理PVC内的文件。

  1. 提前创建带有正确权限的PVC(比如用StorageClass动态创建,或者手动配置PV)
  2. 在Helm values.yaml中添加挂载配置:
agent:
  extraVolumes:
    - name: pod-logs
      persistentVolumeClaim:
        claimName: splunk-logs-pvc
  extraVolumeMounts:
    - name: pod-logs
      mountPath: /var/log/pods
      readOnly: false
  containerSecurityContext:
    runAsUser: 20000
    runAsNonRoot: true
    readOnlyRootFilesystem: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:55:06