kubectl exec 失败并显示错误“无法使用 TTY - 输入不是终端或正确类型的文件”

Shr*_*aid 9 kubernetes jenkins-pipeline kubectl

我正在使用以下命令运行 jenkins 管道:

kubectl exec -it kafkacat-5f8fcfcc57-2txhc -- kafkacat -b cord-kafka -C -t BBSim-OLT-0-Events -o s@1585031458
Run Code Online (Sandbox Code Playgroud)

在管道运行的机器的终端上运行良好,但在实际管道上我收到以下错误:“无法使用 TTY - 输入不是终端或正确类型的文件”

有关如何解决此问题的任何提示?

4F2*_*A2E 45

对于 Windows git bash:

alias kubectl='winpty kubectl'
$ kubectl exec -it <container>
Run Code Online (Sandbox Code Playgroud)

或者只是winpty在所需命令之前使用。

  • 这就是答案!我的win10上可以用 (4认同)

Rya*_*ine 13

对于 Windows GitBash 用户,使用Powershell不是 GitBash

  • 是否有可能将 GitBash 配置为像 Powershell 一样工作?谢谢。 (4认同)

cod*_*ger 9

删除该-t选项。这需要一个 TTY,正如您所指出的,Jenkins 中不存在 TTY。

  • -i 仍然失败,请参见此处: kubectl exec --namespace default -i svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password &amp;&amp; echo OCI 运行时执行失败:执行失败:container_linux。 go:370:启动容器进程导致:exec:“C:/ Program Files / Git / usr / bin / cat”:stat C:/ Program Files / Git / usr / bin / cat:没有这样的文件或目录:未知命令终止并退出代码 126 (2认同)

Thi*_*shi 9

当标志-it与 一起使用时kubectl exec,它启用 TTY 交互模式。鉴于您提到的错误,Jenkins 似乎没有分配 TTY。

由于您在 Jenkins 作业中运行命令,我认为您的命令不一定是交互式的。该问题的一个可能解决方案是简单地删除-t标志并尝试执行以下操作:

kubectl exec -i kafkacat-5f8fcfcc57-2txhc -- kafkacat -b cord-kafka -C -t BBSim-OLT-0-Events -o s@1585031458
Run Code Online (Sandbox Code Playgroud)