如何向kubectl exec调用的脚本传递环境变量?
解决kubectl exec传递环境变量到容器脚本的问题
你之前的命令报错,是因为--后面的内容会被容器直接当作可执行命令处理。你写的PASSWORD=pswd /mnt/script.sh会被解析为要执行PASSWORD=pswd这个"命令",但它并不是可执行文件,所以才会提示找不到。
有两种可行的解决方式:
方式一:通过shell命令包裹执行
借助容器内的shell(比如sh/bash)来执行带环境变量的命令,让shell帮你处理环境变量的设置:
kubectl exec client -n namespace -- sh -c 'PASSWORD=pswd /mnt/script.sh'
如果容器内默认是bash,也可以换成bash -c。
方式二:使用kubectl exec的--env参数
kubectl exec本身支持--env(缩写-e)选项来设置环境变量,直接在执行脚本前指定即可:
kubectl exec -e PASSWORD=pswd client -n namespace -- /mnt/script.sh
这种方式更简洁,不需要依赖shell包裹,环境变量会直接作用于后续执行的脚本进程。
注意:确保你的script.sh脚本里正确读取了PASSWORD变量(比如用$PASSWORD引用),否则即使传递了也无法生效。
内容的提问来源于stack exchange,提问作者user3142695
相关产品推荐
相关产品推荐

