背景
为了让pod可以更稳定的运行,不会因为资源被抢占的问题导致运行失败
资源设置
资源设置针对的是pod内的docker容器
最小占用资源和最大占用资源设置成一样值的话,就是docker在启动时会占用固定的资源
CPU,GPU,内存都可以单独设置,不一定需要成对配置
参考
jnlp单独配置
jnlp默认是不在jenkinsfile里面的,这个时候需要单独增加jnlp的配置,这样jnlp就可以更稳定的运行
CI集群pod 设置jnlp 资源保护
资源设置针对的是pod内的docker容器
最小占用资源和最大占用资源设置成一样值的话,就是docker在启动时会占用固定的资源
设置了资源保护之后,可以最大限度的防止由于资源不足导致的docker 退出的问题
如果jenkinsfile yaml里面没有自定义jnlp的container 需要新增一个jnlp的 container 配置
spec:
nodeSelector:
jenkins-ci: "true"
containers:
- name: jnlp
image: hub.hobot.cc/ci/jnlp-slave:4.13.2-1
resources:
requests:
cpu: 1
memory: 2Gi
limits:
cpu: 1
memory: 2Gi
其他docker
以下以prepare docker作为参考:
prepare docker是参考容器,请根据实际需要设置资源保护的编译docker name去设置,例如:build,ubuntu-build等等编译容器,prepare只是拉代码的容器不用设置保护
设置CPU和内存的资源限制
CPU设置的值是频率,一般不建议超过8000m
内存设置的值一般不超过16000Mi
最小占用资源(该值设置过大会影响job调度效率)
cpu:1000m
mem:2000Mi
最大占用资源(这里可以根据job场景和docker设置)
cpu:2000m
mem:4000Mi
对应的jenkinsfile 参考如下:
- name: prepare
image: hub.hobot.cc/builder/cicd-common-tool:v8
command:
- cat
tty: true
env:
- name: CONTAINER_ENV_VAR
value: prepare
resources:
requests:
cpu: 1000m
memory: 2048Mi
limits:
cpu: 2000m
memory: 4096Mi
设置GPU和内存的资源限制
GPU设置的值是显卡的核心数量,一般不建议超过2卡
内存不建议设置超过60Gi
最小占用资源
GPU:2卡
mem:60Gi
最大占用资源
GPU:2卡
mem:60Gi
Jenkinsfile 参考如下
- name: prepare
image: hub.hobot.cc/builder/cicd-common-tool:v8
command:
- cat
tty: true
env:
- name: CONTAINER_ENV_VAR
value: prepare
resources:
limits:
nvidia.com/gpu: "2"
memory: 60Gi
requests:
nvidia.com/gpu: "2"
memory: 60Gi