You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Kubernetes Pod传递带参数的本地脚本?

解决kubectl exec传递参数给本地脚本的问题

正确命令

直接用以下写法即可将本地脚本和参数传递到Pod内执行:

kubectl exec -i <pod> -c <container> -n "$namespace" -- bash -s "$var" < script.sh

如果需要传递多个参数,只需依次追加:

kubectl exec -i <pod> -c <container> -n "$namespace" -- bash -s "$var1" "$var2" "$var3" < script.sh

错误写法分析

第一种写法

kubectl exec -i <pod> -c <container> -n "$namespace" -- bash -c "`sh script.sh "$var"`"
  • 错误核心:反引号会让sh script.sh "$var"在本地执行,把脚本的输出内容作为字符串传给Pod内的bash -c执行,而非将脚本本身传到Pod里运行。相当于Pod里执行的是本地脚本的输出,而非脚本本身,自然不存在$1参数。

第二种写法

kubectl exec -i <pod> -c <container> -n "$namespace" -- bash -c "bash -s" -- "$var" < script.sh
  • 错误核心:-- "$var"的位置错误。--是kubectl用来区分自身参数和容器命令参数的分隔符,此处bash -c "bash -s"是容器内要执行的命令,"$var"应该作为容器内bash -s的参数,但当前写法下"$var"被识别为kubectl的参数,并未传递给容器内的shell。

第三种写法

kubectl exec -i <pod-name> -c <container-name> -n "$namespace" -- bash -c 'bash -s' < script.sh "$var"
  • 错误核心:重定向和参数的顺序混乱。"$var"被解析为kubectl的额外参数,而非传递给容器内bash -s的参数;同时本地脚本的输入重定向没有正确关联到容器内的bash -s进程,导致参数无法被脚本接收。

内容的提问来源于stack exchange,提问作者ryanflynn001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:14:56