kubectl attach:无法使用TTY - 容器es-node没有分配一个

spe*_*ane 12 containers tty kubernetes

我试图附加到Kubernetes中的正在运行的容器,但是我收到下面的错误消息.

>kubectl attach -it es-client-2756725635-4rk43 -c es-node
Unable to use a TTY - container es-node did not allocate one
If you don't see a command prompt, try pressing enter.
Run Code Online (Sandbox Code Playgroud)

如何在容器yaml中启用TTY?

Ale*_*aru 10

为了在做附加时有适当的TTY和stdin:

kubectl attach -it POD -c CONTAINER
Run Code Online (Sandbox Code Playgroud)

容器必须配置tty: truestdin: true.默认情况下,这两个值都是false:https://kubernetes.io/docs/api-reference/v1.5/#container-v1

示例Pod:

spec:
      containers:
      - name: web
        image: web:latest
        tty: true
        stdin: true
Run Code Online (Sandbox Code Playgroud)


Ale*_*ias 8

它失败的原因是因为你没有传递bash参数.这在尝试创建tty连接时导致失败.

请试试:

kubectl exec -it [POD-NAME] -c [CONTAINER-NAME] bash
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以回答这个问题,但提供有关如何和/或解决问题的原因的其他背景将提高答案的长期价值. (5认同)
  • 这成功地在正在运行的容器内启动了一个交互式 shell,这非常有用(谢谢),但它没有回答使用附加的 OP 问题。另请注意,有些容器只有 sh (没有 bash) (2认同)

CGF*_*FoX 5

对于 Windows,MINGW64 (git bash) 似乎不起作用,但 PowerShell 可以!

kubectl exec -it abc-deployment-5d64659ff8-8tnnb -- /bin/bash
root@abc-deployment-5d64659ff8-8tnnb:/#
Run Code Online (Sandbox Code Playgroud)