kubectl exec fails with the error "Unable to use a TTY - input is not a terminal or the right kind of file"

3/24/2020

I am running a jenkins pipeline with the following command:

kubectl exec -it kafkacat-5f8fcfcc57-2txhc -- kafkacat -b cord-kafka -C -t BBSim-OLT-0-Events -o s@1585031458

which is running fine on the terminal of the machine the pipeline is running on, but on the actual pipeline I get the following error: "Unable to use a TTY - input is not a terminal or the right kind of file"

Any tips on how to go about resolving this?

-- Shrey Baid
jenkins-pipeline
kubectl
kubernetes

2 Answers

3/24/2020

When the flags -it are used with kubectl exec, it enables the TTY interactive mode. Given the error that you mentioned, it seems that Jenkins doesn't allocate a TTY.

Since you are running the command in a Jenkins job, I would assume that your command is not necessarily interactive. A possible solution for the problem would be to simply remove the -t flag and try to execute the following instead:

kubectl exec -i kafkacat-5f8fcfcc57-2txhc -- kafkacat -b cord-kafka -C -t BBSim-OLT-0-Events -o s@1585031458
-- foo0x29a
Source: StackOverflow

3/24/2020

Remove the -t option. That requests a TTY, which as you noted does not exist in Jenkins.

-- coderanger
Source: StackOverflow