您可以添加一个shell容器,就像这样。那么你可以使用
我正在尝试附加到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.
如何在容器Yaml中启用TTY?
为了在进行附加时具有适当的TTY和stdin:
kubectl attach -it POD -c CONTAINER
容器必须配置为tty: true
和stdin: true
。默认情况下,这两个值均为false
:https://kubernetes.io/docs/api-reference/v1.5/#container-v1
示例窗格:
spec:
containers:
- name: web
image: web:latest
tty: true
stdin: true
之所以失败,是因为您没有传递bash参数。尝试创建tty连接时,这会导致失败。
请尝试:
kubectl exec -it [POD-NAME] -c [CONTAINER-NAME] bash
对于Windows,MINGW64(git bash)似乎不起作用,但是PowerShell起作用!
kubectl exec -it abc-deployment-5d64659ff8-8tnnb -- /bin/bash
root@abc-deployment-5d64659ff8-8tnnb:/#
[无论我做什么,都没有用,tty
命令将始终返回not a tty
响应并退出非0,即,要求tty
的任何内容都无法在我的终端上工作。
我正在用永久磁盘作为我的$HOME
并将Ubuntu Bionic Beaver
上的GKE
做成一个临时工作站。
由于我已经在brew
的PD
中安装了$HOME
,并且brew
在我的$PATH
中,因此对我有用:]
brew install tmux tmux new -d -s <some arbitrary session name here> ### i.e.> tmux new -d -s tty tmux ls # Lists your sessions tmux a # Attach to first available session
然后在tmux中:
$ tty
沃伊拉/dev/pts/0
我的无知者是b0rkz,但现在我可以做一些提示输入交互式密码的操作,即gcloud auth
。
PS:对于那些好奇的人,我用/etc/shadow
将/etc/group
,/etc/passwd
,/etc
安装到configmap
中>
您可以添加一个shell容器,就像这样。那么你可以使用
kubectl attach -it nginx -c shell
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
shareProcessNamespace: true
containers:
- name: nginx
image: nginx
- name: shell
image: busybox
stdin: true
tty: true
您可以添加一个shell容器,就像这样。那么你可以使用