
从引入开源云技术到行内第一个试点应用在开源PaaS云平台成功投产,再到完成测评并引进更为成熟的PaaS产品,我行PaaS云平台正在快速发展。
PaaS团队在应用上云一线支持过程中积累了不少宝贵经验。现通过系列文章与大家一起分享,希望能提供有益的参考。云上之路,一起学习,共同成长。
PaaS团队


Jenkins构建失败,信息如下:


通过Jenkins构建日志可以看到,Deploy DEV环节报错。Deploy DEV为Jenkinsfile(Jenkins流水线脚本)中定义,用于读取TFS中定义的“*-pipeline.yaml”脚本,通过解析该脚本将应用发布到PaaS平台。
此问题通过Jenkins控制台无法定位到具体原因,需结合与此构建环节有关的两个系统(存放发布脚本的TFS、用于发布应用的PaaS平台)来分析。
Jenkins构建日志,未提示TFS中发布脚本格式错误,故将重点放到PaaS平台进行分析。PaaS常备环境,稳定运行着数百个应用项目,因此可以排除平台自身问题。
PaaS平台与应用构建发布相关的菜单有Resources --> Quota、Applications --> Deployments、Builds中Images与Builds。下面通过排除法,来缩小问题产生范围。





注:如Pod启动报错,通过Applications --> Pods查看Events或Logs进行分析。


注:源码编译或构件镜像失败,通过Builds --> Images查看Events或Logs进行分析。




看到这儿,大家可能有些不是太理解,Events中这段信息是什么意思,这块需要为大家补充一个知识点LimitRange。
LimitRange(Resources --> Quota)中底部,如下图:

LimitRange为PaaS平台Pod资源约束组件,常配合Jenkins使用。
LimitRange中有两组参数min与max一定要理解,这两组参数与Deployment中CPU、内存的request与limits有较强关联。
如果TFS中“*-pipeline.yaml”脚本定义的Deployment组件CPU与内存request值小于min中值,或limits值大于Max值,都会导致Pod无法正常运行。通过以上分析,已定位问题产生的原因。

查看项目命名空间LimitRange确定min与max值,调整TFS中“*-pipeline.yaml”中Deployment组件CPU与内存request与limits值,使之与LimitRange中min、max范围相匹配即可。
本文通过Jenkins构建失败的一个典型案例,与大家分享了PaaS一线工程师分析、解决问题的思路与方法,希望对大家有所帮助。更多精彩内容见下期文章。


顾问:许国平 李湘宜
赵晓玲 张刚
总编:孙鹏晖
编辑:陈冠豪
美编:郎贤美


长按二维码,关注我们吧!

-本文为“数风云”第4期文章;
-转载本公众号文章请联系我们;
-欢迎来稿:请按“题目-作者”格式命名发送到sunpenghui@abchina.com。





