如何延长kubectl exec进入Pod后bash交互环境的空闲超时时间
kubectl exec 会话15秒空闲自动断开解决方法
1. 集群网络层空闲会话超时(最高发原因)
15秒的短超时通常是集群kube-apiserver前端的负载均衡、反向代理、防火墙配置了TCP空闲会话回收策略,无流量时主动断开连接导致。
- 临时保活方案:进入容器后执行后台保活任务,每隔固定时间发送流量避免会话被回收:
while true; do sleep 10; echo -n ""; done &
- 永久方案:联系集群管理员调整对应网络设备的空闲会话超时阈值,同时检查kube-apiserver启动参数
--streaming-connection-idle-timeout的配置,该参数默认值为4小时,若被修改为过小值也需要同步调整。
2. 容器内部Shell超时配置
若Pod镜像默认配置了bash的TMOUT环境变量,也会触发无操作自动登出。
- 临时生效:进入容器后执行命令取消超时,或设置期望的超时时长(单位为秒,示例为30分钟):
# 取消超时限制 unset TMOUT # 配置30分钟超时 export TMOUT=1800
- 永久生效:制作容器镜像时将上述配置写入
/etc/profile或者对应用户的~/.bashrc文件即可。
3. kubectl客户端超时配置
检查本地kubeconfig配置是否设置了过短的exec超时,也可以在执行命令时主动指定超时时长,示例为设置1小时超时:
kubectl exec -ti --request-timeout=3600s elasticsearch-0 -n pprod -- bash
内容的提问来源于stack exchange,提问作者user87005
相关产品推荐
相关产品推荐

