Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker image无法在Jenkins Kubernetes建造管道中存活_Jenkins_Kubernetes_Jenkins Pipeline_Argocd - Fatal编程技术网

Docker image无法在Jenkins Kubernetes建造管道中存活

Docker image无法在Jenkins Kubernetes建造管道中存活,jenkins,kubernetes,jenkins-pipeline,argocd,Jenkins,Kubernetes,Jenkins Pipeline,Argocd,我们希望使用Jenkins文件中的ArgoCD进行部署(这与我们的目的略有不同,但距离足够近),在完成一些实验后,我们希望尝试使用CLI的官方容器,因此我们将此代码段添加到我们的管道kubernetes yaml中: - name: argocdcli image: argoproj/argocli command: - argo args: - version tty: true 不幸的是,让这些容器保持活动状态的通常方法是调用容器中的c

我们希望使用Jenkins文件中的ArgoCD进行部署(这与我们的目的略有不同,但距离足够近),在完成一些实验后,我们希望尝试使用CLI的官方容器,因此我们将此代码段添加到我们的管道kubernetes yaml中:

  - name: argocdcli
    image: argoproj/argocli
    command:
    - argo
    args: 
    - version
    tty: true
不幸的是,让这些容器保持活动状态的通常方法是调用容器中的
cat
,而该容器不存在,因此它失败得很惨。实际上,这里唯一的命令是“argo”命令,它没有无限睡眠的方式。(我们将向上游报告此情况,以便修复此问题,但在我们等待时……)


因此,我的问题是,有没有办法向库伯内特斯表明,我们知道这个豆荚不能靠自己维持生存,因此不能立即将其拆除

不幸的是,这是不可能的,因为正如您所说,
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

为什么它需要在完成后继续运行?@coderanger显然这就是Jenkins-kubernetes插件在其代理中运行容器的方式。有一个“永远睡眠”命令可以让pod保持运行,然后Jenkins根据需要调用pod中的实际命令。感谢您的关注。我不得不从pod中转储文件系统以进行调查(这确实需要更好的工具)。但问题是,是否有办法让kubernetes忽略这一点并保持pod正常运行?您将命令更改为在后台运行argo,然后使用
cat
sleep
来保持主进程运行在Kubernetes上无法做到这一点。在kubernetes一侧,没有“保持”、“等待”、“睡眠”或任何其他选项可以用来在完成任务后保持这个吊舱。
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always