PersistentVolumeClaim我正在尝试使用kubernetes-plugin来保留我的工作区
我已经创建了文件PV并将PVC其存储在本地磁盘上。该管道以前运行良好,但现在不再在本地磁盘上创建工作区。
这是我的管道。知道为什么不起作用吗?
def podTemplate = """
apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven
command:
- sleep
args:
- infinity
volumeMounts:
- name: workspace-volume
mountPath: /home/jenkins/agent
workingDir: "/home/jenkins/agent"
volumes:
- name: "workspace-volume"
persistentVolumeClaim:
claimName: "jenkins-slave-pvc"
readOnly: false
"""
pipeline {
agent none
stages {
stage ('maven') {
agent {
kubernetes {
yaml podTemplate
defaultContainer 'maven'
}
}
stages {
stage('Nested 1') {
steps {
sh "touch Nested1 && mvn …Run Code Online (Sandbox Code Playgroud) jenkins kubernetes jenkins-pipeline jenkins-declarative-pipeline jenkins-kubernetes
我正在尝试在声明性 jenkins 管道上的不同kubernetes pod 上并行运行一些端到端测试,但 jenkins 似乎尝试在相同的kubernetes pod 上运行并行阶段。这会导致数据库死锁,因为两个进程都尝试插入/截断/更新/查询相同的表。有没有办法可以为每个并行阶段启动不同的 Pod?
kubernetes 插件配置:
agent {
kubernetes {
label 'my-label'
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
metadata:
name: dind
spec:
containers:
- name: < default container >
image: < image >
securityContext:
privileged: true
fsGroup: 1000
command:
- cat
tty: true
volumeMounts:
- name: jenkins-bundle-gems
mountPath: /usr/local/bundle
- name: <tests-container-name>
image: < image >
securityContext:
privileged: true
fsGroup: 1000
volumeMounts:
- name: jenkins-bundle-gems …Run Code Online (Sandbox Code Playgroud) parallel-testing jenkins jenkins-pipeline jenkins-declarative-pipeline jenkins-kubernetes
我正在使用Jenkins Kubernetes 插件,它在 Kubernetes 集群中启动 Pod,充当 Jenkins 代理。Pod 包含 3 个容器以提供从属逻辑、Docker 套接字以及gcloud命令行工具。
通常的工作流程是从机完成其工作并通知主机它已完成。然后 master 终止 pod。但是,如果从属容器由于网络连接丢失而崩溃,则该容器将终止并显示错误代码 255,其他两个容器将继续运行,pod 也会继续运行。这是一个问题,因为 Pod 具有大量 CPU 请求,而且从属设备仅在必要时运行的设置成本低廉,但让多台机器运行 24 小时或周末会造成明显的经济损失。
我知道在同一个 Pod 中启动多个容器并不是 Kubernetes 艺术,但是如果我知道自己在做什么并且我假设我知道的话就可以了。我确信考虑到 Jenkins Kubernetes 插件的工作方式,很难以不同的方式解决这个问题。
如果一个容器失败而没有重生,我可以让 pod 终止吗?带有超时的解决方案也是可以接受的,但不太优选。