繁体   English   中英

Docker 映像无法在 Jenkins Kubernetes 构建管道中保持活动状态

[英]Docker image not able to stay alive in a Jenkins Kubernetes build pipeline

我们想从我们的 Jenkinsfile 中使用 ArgoCD 进行部署(这有点不像这样做的目的,但已经足够接近了),并且在做了一些实验之后想尝试使用带有 CLI 的官方容器,所以我们添加了这个片段到我们的我们的管道 kubernetes yaml:

  - name: argocdcli
    image: argoproj/argocli
    command:
    - argo
    args: 
    - version
    tty: true

不幸的是,使这些容器保持活动状态的常用方法是在容器中调用cat ,它不存在,因此它会失败。 实际上,那里唯一的命令是“argo”命令,它无法无限休眠。 (我们将向上游报告此问题,以便将其修复,但在我们等待的过程中......)

因此,我的问题是,有没有办法向 Kubernetes 表明我们知道这个 pod 无法自行保持,因此不会立即将其拆除?

不幸的是,这是不可能的,因为正如您所说, argo是此图像上唯一可用的命令。

可以在这里确认:

####################################################################################################
# argocli
####################################################################################################
FROM scratch as argocli
COPY --from=argo-build /go/src/github.com/argoproj/argo/dist/argo-linux-amd64 /bin/argo
ENTRYPOINT [ "argo" ]

正如我们在这个输出中看到的,运行 argo 就是这个容器所做的一切:

$ kubectl run -i --tty --image argoproj/argocli argoproj1 --restart=Never 
argo is the command line interface to Argo

Usage:
  argo [flags]
  argo [command]
...  

您可以选择基于此创建自己的映像并包含睡眠,因此可以像本示例一样保持运行:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM