gpt4 book ai didi

kubernetes - 如何配置 kubernetes 以允许长时间运行的交互式 session ?

转载 作者:行者123 更新时间:2023-12-02 11:49:37 24 4
gpt4 key购买 nike

使用 kubectl run/exec -i --tty 功能运行 v1.5.1 时出现问题。

发送数据时连接不会中断。因此,当我启动一个交互式容器 session 时,使用一个不时输出一些内容的脚本,它似乎可以正常工作。

基于此,我创建了一个讨厌的解决方法来让我的容器 session 在没有我的交互的情况下继续进行。这些 session 过早终止真的很烦人。它们会留下垃圾,如果您附加到正在运行的生产容器,则需要清理这些垃圾。

解决方法(作为后台进程每 59 秒向 STDERR 打印一个空格字符 ):

# within your container session
$ while :; do sleep 59; echo -n ' ' >&2; done &

当我不启动这样的脚本时,请查看以下输出。它表明交互式 session 会在大约 2 分钟内提前终止。

如果您利用此功能来调试正在运行的应用程序和容器安装,这真的很烦人。

$ time kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
Waiting for pod default/busybox to be running, status is Pending, pod ready: false
If you don't see a command prompt, try pressing enter.
/ # Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
Waiting for pod default/busybox to terminate, status is Running
error: timed out waiting for the condition

real 2m4.657s

从此 Github Issue 重新发布.

最佳答案

我现在已经解决了这个问题。该问题是由通过 AWS LoadBalancer(ELB 或 ALB)提供服务的 Kubernetes API 引起的。这些连接会在超时后终止连接,从而导致 kubectl 与 Kubernetes API 服务器之间断开连接。

这本身不是 Kubernetes 问题,它与您如何为最终用户提供 Kubernetes API 服务器有关。在这种情况下,通过负载均衡器。

快速解决方法:增加超时时间或偶尔通过网络发送数据以保持连接打开。

关于kubernetes - 如何配置 kubernetes 以允许长时间运行的交互式 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41568215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com