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:/#
このように、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