前提是安装了kubernetes插件,并对接了k8s
在连接k8s的那配置
k8s插件pod模板配置
pod模板主要包含2部分的配置
-
pod基本信息,可以配置pod名称,docker镜像,pod label,pod的原始yaml以及rbac权限
-
container的详细配置
1、pod基本信息
- 名称: Pod 模板的名称;
- 命名空间: Pod 要启动到 Kubernetes 的 Namespace 名称;
- 标签列表: 用于 Jenkins Job 在执行任务时候,指定的slave的标签;
- 用法: 控制 Jenkins 如何在这台机器上安排构建。有两个值“尽可能的使用这个节点”和“只允许运行绑定到这台机器的Job”两个选项,“尽可能的使用这个节点”会当有别的节点也能执行任务时会交由别的节点执行,而“只允许运行绑定到这台机器的Job”则是只能由这个节点执行任务。
- 父级的 Pod 模板名称: 如果之前已经创建了 Pod 模板,这里则可以使用 Pod 模板名称引入该模板,让其当做父级模板。
- 容器列表: 一个 Pod 中可以设置多个 Docker 容器,这里可以对这些容器进行配置。
- 环境变量: Pod 环境变量设置。
- 卷: 可以设置 Pod 中各个容器的存储挂载。
- Concurrency Limit: 允许在 Kubernetes 集群中创建 Pod 的最大值。
- Pod Retention: Pod 的保留策略,默认会替换基本设置中的保留策略值。
- 代理的空闲存活时间(分): 在执行完任务后,代理将空闲,设置此值可以设置该代理可以空闲多久,当到达时间后,Pod 就可能被删掉。
- Pod 寿命(秒): 不用 Pod 执行 Jenkins Job 任务是成功还是失败,到达这个指定时间都会将 Pod 杀死。
- 连接 Jenkins 的超时时间(秒): Slave Pod 连接 Jenkins Master 的超时时间。
- 注解: Slave Pod 的 Annotation 注解值。
- Pod 的原始 yaml: 原始 Pod 模板 yaml,这个可以作为底层模板,可以在 yaml 中设置上面界面中配置的全部参数(Pod Template 中可以只配置个 yaml,就不需要对一堆界面上的东西进行配置了 )。
- Yaml merge strategy: 对于 yaml 文件和界面上的 Pod 可视化配置的操作规则,可以将 yaml 中的配置和界面中的配置进行合并或者界面的配置替换掉 yaml 中的配置。
- Show raw yaml in console: 是否显示 Pod 模板信息输出到控制台日志中。
- 拉取镜像的 Secret: 拉取镜像的 Secret。
- Service Account: Kubernetes 一般是使用 RBAC 插件管理权限,如果想对 Pod 设置一定权限,就需要配置此值。
- 节点选择器: 节点筛选,选择 Pod 只能启动在带有特定 Label 的节点上。
- 使用自定义的工作空间卷: 自定义 Jenkins 执行任务时候,将构建的文本,拉取的源码,编译的项目存放的地址。
- 工具位置: 可以设置 Maven、Docker 工具,一般不需要特别设置。
2、container信息
主要是设置 Pod 模板中,Pod 包含的 Container 的参数配置,可以设置多个镜像的镜像名称、工作目录、环境变量、CPU 与 Memory 限制等。
- 名称: 容器名称。
- Docker 镜像: Docker 镜像名称。
- 总是拉取镜像: 是否每次执行都重新拉取镜像。
- 工作目录: 设置在执行 Jenkins Job 时容器上的工作目录。
- 运行的命令: 在容器启动后执行的命令。
- 命令参数: 要执行的命令的参数。
- 分配伪终端: 是否能带伪命令终端。
- EnvVars: 环境变量。
- 以最高权限运行: 是否提供 Kubernetes 中的特权。
- CPU 需求: 预估程序使用CPU大小。
- 内存需求: 预估程序使用内存大小,Kubernetes 会根据此值来判断一个 Pod 最多启几个这样容器。
- CPU 限制: CPU使用上限
- 内存限制: 内存使用上限
- 健康检查 Exec action: 存活探针执行健康检测 Exec action 命令
- Initial Delay Seconds: 初始化延迟的探针检测时间
- Timeout Seconds: 探针延迟超时时间
- Failure Threshold: 探针检测认为探测失败几次就为真正失败。
- Period Seconds: 探针检测间隔。
- Success Threshold: 探针检测认为探测成功几次就为真正成功。
- 端口映射: Docker 的端口映射。
3、案例




4、pipeline使用模板
pipeline {agent { label 'template' } // label 就能直接使用这个模板stages {stage('test') {steps {sh "pwd"sh "ls -lh ."}}}
}
