暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

乘云而上系列 | Jenkins构建失败之LimitRange

数风云 2020-06-08
415
点击上方“数风云”关注我们吧


从引入开源云技术到行内第一个试点应用在开源PaaS云平台成功投产,再到完成测评并引进更为成熟的PaaS产品,我行PaaS云平台正在快速发展。


PaaS团队在应用上云一线支持过程中积累了不少宝贵经验。现通过系列文章与大家一起分享,希望能提供有益的参考。云上之路,一起学习,共同成长。

PaaS团队








Jenkins构建失败之LimitRange



1
现象



Jenkins构建失败,信息如下:




2
分析



通过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。下面通过排除法,来缩小问题产生范围。


查看命名空间中Quota(Resources --> Quota)资源充足,排除资源不足问题。


查看命名空间中Pods(Applications --> Pods)

Pods未生成,排除应用发布问题。

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


查看命名空间中Builds(Builds --> Images)

Jenkins源码编译、镜像生成环节都已通过。故排除镜像生成(Builds --> Images)问题。

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


查看命名空间中Builds(Builds --> Builds)

1. 查看Builds --> Builds中本次流水线构建记录,结果如下图:




2. 查看该流水线构建中的Events,如下图:



看到这儿,大家可能有些不是太理解,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无法正常运行。通过以上分析,已定位问题产生的原因。



3
解决



查看项目命名空间LimitRange确定min与max值,调整TFS中“*-pipeline.yaml”中Deployment组件CPU与内存request与limits值,使之与LimitRange中min、max范围相匹配即可。


本文通过Jenkins构建失败的一个典型案例,与大家分享了PaaS一线工程师分析、解决问题的思路与方法,希望对大家有所帮助。更多精彩内容见下期文章。

顾问:许国平 李湘宜

     赵晓玲 张刚

总编:孙鹏晖

编辑:陈冠豪

美编:郎贤美


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

-本文为“数风云”第4期文章;

-转载本公众号文章请联系我们;

-欢迎来稿:请按“题目-作者”格式命名发送到sunpenghui@abchina.com。



文章转载自数风云,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论