Friday, October 7, 2022

[SOLVED] Kubectl: get a shell to a running container under Windows

Issue

I'm trying to log into running container using Kubectl, according to instructions in rel="nofollow noreferrer">https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/, but I'm failing miserably:

kubectl exec -it mycontainer -- /bin/bash

Unable to use a TTY - input is not a terminal or the right kind of file rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"D:/Applications/Git/usr/bin/bash\": stat D:/Applications/Git/usr/bin/bash: no such file or directory"

command terminated with exit code 126

It looks like kubectl tries to exec bash on my machine, which is totally not what I want to achieve.

I can exec commands without spaces:

$ kubectl exec mycontainer 'ls'
lib
start.sh

But with not:

$ kubectl exec mycontainer 'ls .'
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"ls .\": executable file not found in $PATH"

command terminated with exit code 126

What I'm doing wrong?

I've tried both in mingw git shell , as with plain windows console.


Solution

Seems it might be related to this github issue.

One of the workarounds might be to use winpty as specified here.
winpty kubectl.exe exec -it pod-name -- sh

You can also try /bin/sh instead of /bin/bash it worked for me, but I do not have a Windows machine to check it in the same environment as you.



Answered By - aurelius
Answer Checked By - Terry (WPSolving Volunteer)