使用kubectl exec执行set命令失败的问题咨询
问题根因
你遇到的报错是set命令的特性导致的,和kubectl exec本身的基础用法无关:
set是shell内置命令,不存在独立的可执行二进制文件。kubectl exec默认会直接尝试将指定命令作为独立进程启动,不会默认加载shell上下文,因此会在PATH中检索不到对应可执行文件抛出报错- 进入Pod的交互shell后可正常执行
set,是因为命令运行在已启动的shell进程上下文中,可直接识别内置命令 ls等命令可正常执行是因为这类命令存在独立的二进制可执行文件,可被系统直接检索到并启动为独立进程
解决方案
执行时指定shell进程,将set作为入参传给shell运行即可,根据容器内的shell环境选择对应命令:
- 容器包含bash环境时使用:
kubectl exec my-pod -- bash -c set - 容器仅包含精简sh环境时使用:
kubectl exec my-pod -- sh -c set
内容的提问来源于stack exchange,提问作者Matthias M
相关产品推荐
相关产品推荐

