【发布时间】:2019-09-17 13:06:53
【问题描述】:
我在一个名为 script01 的 pod 中有一个脚本,它可以接受参数。
我通过以下方式运行脚本:
POD=<pod name>
runScript="kubectl -n nmspc exec $POD -- script01"
$runScript --command "do stuff"
我以这种方式运行它的原因是我无权在本地计算机上创建脚本,但我可以访问 pod 上的脚本。
问题是我想将主机的 IP 传递给 pod,并希望使用环境变量来完成。我试过使用 bash -c 来传递参数,但是当通过变量调用脚本时,它不会附加参数。
runScript="kubectl -n nmspc exec $POD -- bash -c \"export curIP=123 && script01\""
但如果我运行它,它确实有效
$runScript --command "do stuff"
如何将环境变量传递给 pod,但仍然可以通过变量调用脚本?
【问题讨论】:
-
解释您的参数发生的部分情况——
bash -c '...'将...解释为要运行的整个脚本。在该...脚本的上下文中,该参数之后的任何参数都会变为$0、$1等——但如果脚本从不读取这些参数,它们就会被忽略。 -
您可能会认为Job 是一种更可靠的方式,可以让某些命令在集群中的某个位置运行。我会尝试保留
kubectl exec进行调试。
标签: bash kubernetes kubectl