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

OpenShift 4.7自定义SCC挂载hostPath后Pod访问出现权限拒绝问题

OpenShift 4.7自定义SCC挂载hostPath只读权限拒绝问题排查方案

1. 确认自定义SCC已正确绑定到服务账号

你当前配置的SCC仅给system:cluster-admins组开放了调用权限,Deployment使用的ubuntu-test服务账号默认无权调用该SCC,会自动降级使用默认的restricted SCC,导致hostPath挂载权限受限。

  • 验证Pod实际生效的SCC:
oc get pod <替换为实际Pod名称> -o yaml | grep openshift.io/scc

如果输出的SCC名称不是test-access,执行以下命令绑定SCC到对应服务账号,绑定后重建Pod再次验证:

oc adm policy add-scc-to-user test-access -z ubuntu-test -n ubuntu-test

2. 排查SELinux强制访问控制拦截

OpenShift节点默认开启SELinux,即使宿主机目录POSIX权限为755,不符合SELinux规则的访问依然会被拒绝:

  • 临时验证方案:登录Pod所在的宿主机节点,执行setenforce 0关闭SELinux强制模式,进入容器测试是否可以正常访问目录。如果访问恢复正常,即可确认是SELinux规则拦截。
  • 永久修复二选一:
    • 方案1:在Deployment的Pod spec.securityContext中添加SELinux配置,适配宿主机日志目录的上下文规则:
      securityContext:
        seLinuxOptions:
          type: container_log_t
      
    • 方案2:修改自定义SCC配置,将seLinuxContext.type从RunAsAny调整为MustRunAs,并配置对应SELinux级别适配hostPath卷访问。

3. 验证目录权限链完整性

你仅检查了目标挂载目录本身的权限,需确认所有上层目录具备执行权限(进入目录必须要有执行权限):

# 依次检查所有上层目录权限
ls -ld /var/log
ls -ld /var/lib/docker
ls -ld /var/lib/docker/containers

确保所有上层目录的other权限至少为r-x(数值权限≥555)。

补充验证

可在容器内执行id命令确认当前运行用户的UID,确保身份配置符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:27:01