Docker 如何在kubernetes中将'args'作为'command'运行
我有一个python脚本,我想在kubernetes作业中运行。我使用了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
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"]