Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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 如何在kubernetes中将'args'作为'command'运行_Docker_Kubernetes_Dockerfile_Docker Entrypoint - Fatal编程技术网

Docker 如何在kubernetes中将'args'作为'command'运行

Docker 如何在kubernetes中将'args'作为'command'运行,docker,kubernetes,dockerfile,docker-entrypoint,Docker,Kubernetes,Dockerfile,Docker Entrypoint,我有一个python脚本,我想在kubernetes作业中运行。我使用了configMap将其上传到位于dir/script.py中的容器中 容器使用args[“load”]正常运行 我曾尝试在作业清单中使用启动后生命周期,但它似乎没有运行 lifecycle: preStop: exec: command: - /bin/sh - -c

我有一个python脚本,我想在kubernetes作业中运行。我使用了
configMap
将其上传到位于
dir/script.py
中的容器中

容器使用
args[“load”]
正常运行

我曾尝试在
作业
清单中使用启动后生命周期,但它似乎没有运行

        lifecycle:
          preStop:
            exec:
              command: 
              - /bin/sh
              - -c 
              - /usr/bin/python /opt/config-init/db/tls_generator.py
下面是清单的片段

      containers:
      - name: {{ template "gluu.name" . }}-load
        image: gluufederation/config-init:4.0.0_dev
        lifecycle:
          preStop:
            exec:
              command: 
              - /bin/sh
              - -c 
              - /usr/bin/python /opt/config-init/db/tls_generator.py
        volumeMounts:
          - mountPath: /opt/config-init/db/
            name: {{ template "gluu.name" . }}-config
          - mountPath: /opt/config-init/db/generate.json
            name: {{ template "gluu.fullname" . }}-mount-gen-file
            subPath: generate.json
          - mountPath: /opt/config-init/db/tls_generator.py
            name: {{ template "gluu.fullname" . }}-tls-script
        envFrom:
        - configMapRef:
            name: {{ template "gluu.fullname" . }}-config-cm
        args: [ "load" ]
如何在
args[“load”]
之后运行
tls\u generator.py
scipt

dockerFile部分看起来像

ENTRYPOINT ["tini", "-g", "--", "/app/scripts/entrypoint.sh"]
CMD ["--help"]
更具体地说,您使用的是
PreStop

由于API请求或管理事件(如liveness probe失败、抢占、资源争用等)而终止容器之前,会立即调用此钩子

如果您想在<代码> POD开始时执行一个命令,您应该考虑使用<代码> PostStart < /C> > 该钩子在创建容器后立即执行。但是,不能保证钩子会在容器入口点之前执行。未向处理程序传递任何参数

另一种选择是使用,以下是一些想法和示例:

  • 使用shell单行命令等待创建,如:
  • 使用如下命令从向下API向远程服务器注册此Pod:
有关如何使用的详细信息,请阅读文档。

更具体地说,您正在使用的是
PreStop

由于API请求或管理事件(如liveness probe失败、抢占、资源争用等)而终止容器之前,会立即调用此钩子

如果您想在<代码> POD开始时执行一个命令,您应该考虑使用<代码> PostStart < /C> > 该钩子在创建容器后立即执行。但是,不能保证钩子会在容器入口点之前执行。未向处理程序传递任何参数

另一种选择是使用,以下是一些想法和示例:

  • 使用shell单行命令等待创建,如:
  • 使用如下命令从向下API向远程服务器注册此Pod:

有关如何使用的详细信息,请阅读文档。

我的最终目标是在load命令完成后立即运行
tls\u generator.py
。这就是我带来的,工作很好

  command: ["/bin/sh", "-c"]
  args: ["tini -g -- /app/scripts/entrypoint.sh load && /usr/bin/python 
              /scripts/tls_generator.py"]

在这种情况下,运行
“tini-g-->app/scripts/entrypoint.sh”
时的默认命令将是
--help
命令。但是添加
load
会将其作为命令传递。

我的最终目标是在load命令完成后立即运行
tls\u generator.py
。这就是我带来的,工作很好

  command: ["/bin/sh", "-c"]
  args: ["tini -g -- /app/scripts/entrypoint.sh load && /usr/bin/python 
              /scripts/tls_generator.py"]
在这种情况下,运行
“tini-g-->app/scripts/entrypoint.sh”
时的默认命令将是
--help
命令。但是添加
load
会将其作为命令传递

sleep 60
  command: ["/bin/sh", "-c"]
  args: ["tini -g -- /app/scripts/entrypoint.sh load && /usr/bin/python 
              /scripts/tls_generator.py"]