背景
使用的是基于k8s环境的JenkinsX,JenkinsX是Jenkins在云环境的版本,支持k8s构建环境,就是通过启用各类构建工具的pod,比如node的pod,maven的pod。
遇到的问题
由于使用不熟练,遇到一些问题,总结下来供以后参考:
- npm构建很慢
- 在k8s中由于容器使用过多节点资源,比如存储,导致节点驱逐容器,然后构建失败。这里比如k8s节点报错:
Attemptting to reclaim ephemeral-storage
主要解决npm构建慢的问题
npm构建慢的解决方案
经过多次实践,解决方案如下:
第一种方案:简单直接,使用淘宝的npm镜像。这样其实速度能快很多
cd test
npm config set registry http://registry.npm.taobao.org
npm get registry
npm i --legacy-peer-deps
npm run build
这种方案有个问题:如果依赖包较多,导致容器耗费大量宿主机资源,会被宿主机驱逐然后导致构建失败,所以还要结合以下第二种方案,挂载pv。
第二种方案:缓存npm包,挂载k8s的pv到pod
1.1 把pv挂载node环境的pod容器的/node_modules下
1.2 进入项目目录,这里的项目目录为test,建立软连接:
cd test
ln -s /node_modules ./node_modules
npm i --legacy-peer-deps
npm run build
这里使用
npm i --legacy-peer-deps
,若直接使用npm install
会由于node版本原因报错
综合两种方案一起使用,最后的构建脚本如下:
cd test
ln -s /node_modules ./node_modules
npm config set registry http://registry.npm.taobao.org
npm get registry
npm i --legacy-peer-deps
npm run build
其实这种方案也解决了容器耗费节点临时资源太多被驱逐的问题,因为使用的存储卷。
仅做记录,供以后参考。
网友评论