cluster-explorer中使用Pod shell导致bash/sh进程残留

源自微信群:Rancher③群—官方交流群

报告者:李永福
由 牛小腩 代为发布

Rancher版本:2.5.4
Kubernetes版本:1.19.3+k3s3

每次从rancher的cluster-explorer(仪表板)进入pod 命令行模式,就会再pod中残留一个下面的进程,这个有方法解决吗?

/bin/sh -c TERM=xterm-256color; export TERM; [ -x /bin/bash ] && ([ -x /usr/bin/script ] && /usr/bin/script -q -c "/bin/bash" /dev/null || exec /bin/bash) || exec /bin/sh」
已邀请:

经测试(包括v2.5.11)该问题确实在于cluster-explorer UI中,而cluster-manager UI则无此问题。


这两个UI在这个功能上使用的是同一个API(k8s原生pod/exec接口),不同之处在于:cluster-manager UI在页面上点击close时,会自动发送特殊key,确保进程可以退出;而cluster-explorer仅仅是关闭了前端窗口,没有其他操作。


以下是cluster-manger的做法:


使用ws进行pod/exec接口调用:
/uploads/answer/20211223/c673ab87497e85b2af9af86263768edd.png

点击页面close时,发送了一个特殊的message:0ZXhpdA0K


本接口的message使用特殊的加密协议:Sec-WebSocket-Protocol: base64.channel.k8s.io (在request header中可以看到),此协议的编码方式需要去掉前两个字符后对剩余字符进行base64 decode。解码后的结果为:^]B


这是一种Break key,可以中断console中的执行程序,参考:https://en.wikipedia.org/wiki/Break_key


结论:

确认是cluster-explorer UI中的BUG,会推动在后续版本中修复。

要回复问题请先登录注册