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

如何在Kubernetes交互式bash pod中传入shell脚本作为输入执行?

问题说明

本地存在名为my-script.sh的Shell脚本,内容如下:

#!/bin/bash
while true; do
  echo '1'
done

已知可通过以下命令在Kubernetes集群中启动一个临时交互式Bash Pod:

kubectl run my-shell --rm -it --image bash -- bash

需求是将本地的my-script.sh作为输入,传递给上述Pod内的Bash环境执行。之前尝试的以下命令无法达到预期效果:

kubectl run my-shell --rm -it --image bash -- /bin/bash -c < my-script.sh
解决方法

原有命令无效的核心原因有两个:

  • 命令中的< my-script.sh重定向是在本地Shell环境生效,仅会把脚本内容作为kubectl进程本身的标准输入,不会自动传递给Pod内部启动的Bash进程
  • bash -c参数的作用是执行后面紧跟的字符串命令,本身不会从标准输入读取脚本内容

最直接的实现方式是给Pod内的Bash加上-s参数,该参数会让Bash主动从标准输入读取要执行的命令,同时把本地脚本重定向到kubectl命令的标准输入,kubectl会自动把标准输入流转发到Pod内的进程:

kubectl run my-shell --rm -it --image bash -- bash -s < my-script.sh

如果需要在脚本执行完成后保留Pod的交互式终端,可以先把脚本创建为ConfigMap挂载到Pod内再执行:

# 从本地脚本创建ConfigMap
kubectl create configmap my-script-cm --from-file=my-script.sh
# 启动Pod时挂载脚本,执行完后进入交互Bash
kubectl run my-shell --rm -it --image bash --volume configmap/my-script-cm --mount-path=/tmp/scripts -- bash -c "bash /tmp/scripts/my-script.sh; exec bash"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:36:43