1. 故障现象

环境在跑自动化测试时打印 error: [ ERROR ] Opening output file '/output.xml' failed: Read-only file system。

2 测试流程

通过 helm chart 部署 pod,在 pod 的指定 container 内运行 robot case。其中,运行的 robot case 需要读写文件。

3. 故障分析

  • 用户权限问题

打印 Read-only file system,排查是不是运行 container 的 id 不是 root,导致无法访问指定目录。

检查 helm chart 及 container id ,发现用户和用户组均是 root。

kubernetes 平台上 container 和 host 未做用户隔离,container 运行的用户即是 host 上的 root。排除了这点还有什么限制呢?

  • scc

除了 container 配置自身的限制还有 kubernetes 集群级别的 scc 限制 container 对 host 上文件系统的访问。

之所以说是 host 上文件系统是因为,这里用到了联合文件系统,container 访问的文件是映射到 host 上的。

查看 scc 发现 container 的 serviceaccount 绑定的 scc 设置了 ReadOnlyFileSystem=true。那么,应该是这里限制了文件系统只能是只读的。

修改 scc 的 ReadOnlyFileSystem 为 false:

kubectl edit scc <scc_name> -n <project>

注意绑定到该 scc 的 pod 并未生效,由于 pod 受 deployment controller 控制,这里直接 delete pod 触发重启,重启之后手动模拟自动化测试,创建文件 output.xml 成功。

一波未平,一波又起。以为搞定了,重新运行 jenkins 自动化测试发现 pull image 报错:

rpc error: code = Unknown desc = reading manifest latest in image-registry.openshift-image-registry.svc:5000...
unauthorized: authentication required

提示很明显更改了 ReadOnlyFileSystem 参数,scc 下的 serviceaccount 均有在文件系统的可读可写权限,这样的权限对于新 pull 的 image 也是适用的,那么在对 pull 的 image 进行更改时也是需要认证的,认证之后才能对 image 进行更改,这是合理的。

同时,这也解释了为什么 ReadOnlyFileSystem false 时,测试 case 可以 pull image,而不用认证。因为没有权限对 image 进行改动啊。

既然知道了原因解决起来也不难了,给 serviceaccount 添加相应的 pull image 的 role 使得 serviceaccount 可以 pull image:

oc policy add-role-to-user system:image-puller system:serviceaccount:<project>:<serviceaccount_name> -n <project>

重新运行 jenkins 测试,运行成功。

kubernetes scc 故障排查小记的更多相关文章

  1. Kubernetes:故障排查(Trouble Shooting)方法总结

    Blog:博客园 个人 本文部分内容源自网络,侵删. 概述 为了跟踪和发现在Kubernetes集群中运行的容器应用出现的问题,我们常用如下排查方法: 查看Kubernetes对象的当前运行时信息,特 ...

  2. kubernetes之故障排查和节点维护(二)

    系列目录 案例现场: 测试环境集群本来正常,突然间歇性地出现服务不能正常访问,过一会儿刷新页面又可以正常访问了.进入到服务所在的pod查看输出日志并没有发现异常.使用kubectl get node命 ...

  3. 1个工具,助你提升K8S故障排查效率!

    Kubernetes的故障排查一直困扰众多运维团队或DevOps,除了Kubernetes本身的复杂性之外,还有Kubernetes的工作负载是动态的原因.本文将介绍1个工具可以帮助你可视化K8S的网 ...

  4. 一次“不负责任”的 K8s 网络故障排查经验分享

    作者 | 骆冰利 来源 | Erda 公众号 ​ 某天晚上,客户碰到了这样的问题:K8s 集群一直扩容失败,所有节点都无法正常加入集群.在经过多番折腾无解后,客户将问题反馈到我们这里,希望得到技术支持 ...

  5. 图解Kubernetes——故障排查指南

    针对越来多的Kubernetes容器云,对Kubernetes集群的故障排查却成了一个棘手问题.本文虫虫给大家以直观图示方式介绍如何排查Kubernetes的故障.该篇是系列文章续——故障排查篇. 概 ...

  6. 超长可视化指南!带你理清K8S部署的故障排查思路,让bug无处遁形

    本文将帮助你厘清在Kubernetes中调试 deployment的思路.下图是完整的故障排查思路,如果你想获得更清晰的图片,请在公众号后台(RancherLabs)回复"troublesh ...

  7. 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)

    原贴如下 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查) 虽然我用的是PHPstudy部署的dedecms,还是一样栽倒这个坑里了. 总结经验:本地测试使用8000~9000的端口比较安全.

  8. Java线上应用故障排查之二:高内存占用

    搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2.java.lang.OutOfMemoryError: Java ...

  9. paip.hql的调试故障排查流程总结

    paip.hql的调试故障排查流程总结 环境.myeclipse7.0 1 Hql的调试工具myeclipxe默认工具.../Hibernate8IDE 1 故障的排除方法overview 1 Hql ...

  10. 使用strace工具故障排查的5种简单方法

    使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...

随机推荐

  1. Fragment动态添加与管理

    activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  2. 【Python】【OpenCV】边缘检测和创建自定义核

    对于使用OpenCV已有的算子,我们还可以自定义卷积核以达到不同的效果. filters.py 1 import cv2 2 import numpy 3 4 """ 定 ...

  3. Ribbon:Spring Cloud负载均衡与服务调用组件

    Ribbon:Spring Cloud负载均衡与服务调用组件 问题总结 负载均衡? Ribbon实现服务调用? Ribbon实现负载均衡? 切换负载均衡策略? 定制负载均衡策略? 问题答案 负载均衡 ...

  4. 用Python来查询聊天记录

    用Python来查询聊天记录 代码 import re def Start(First_Date, Second_Date, First_Name, Second_Name): First = re. ...

  5. Windows 监控配置

    1:Windows2003服务器 2:Windows Sever 2008安装snmp 3:Windows Sever 2012安装snmp 4:Windows 10安装snmp 服务配置 双击打开[ ...

  6. Angular 实现分页器组件

    很感谢 angular实现简单的pagination分页组件 - Amor丶Diamond - 博客园 (cnblogs.com) , 我根据这位博主代码做了修改, 增加了跳转和每页行数功能. 先看图 ...

  7. 文心一言 VS 讯飞星火 VS chatgpt (63)-- 算法导论6.5 2题

    文心一言 VS 讯飞星火 VS chatgpt (63)-- 算法导论6.5 2题 二.试说明 MAX-HEAP-INSERT(A,10)在堆A=(15,13,9,5,12,8,7,4,0,6,2,1 ...

  8. 身未动心已远,AI带你流浪地球

    摘要:我们提供了一键运行的notebook AI作画 Dreambooth 生成自定义主体,可以在ModelArts平台上调试开发自己的文生图模型. 本文分享自华为云社区<DreamBooth+ ...

  9. 【乘风破浪的开发者】丁一超:从AI实战营出发探索未知的AI世界

    摘要:从年初的不知不觉进入AI学习的道路,到认识并熟练使用ModelArts平台.虽然只有短短的半年,但这半年的探索学习,让丁一超看清了未来的路在何方. 从招聘网站上输入"人工智能工程技术人 ...

  10. 化蛹成蝶,华为云DevCloud助力互联网+转型,重构钢铁产业链

    摘要:随着电子商务迅速发展,各个行业巨头纷纷投入互联网+的怀抱,钢铁行业作为典型的传统行业,如何实现华丽转身,拥抱市场,加快产业新旧动能转换? 本文分享自华为云社区<化蛹成蝶,华为云DevClo ...