kubectl exec pod_name执行python脚本 idle timeout问题

问题描述

cat test.py
		#/usr/bin/env python
		
		import time
		for i in range(5):
		  print(i)
		  time.sleep(60)

time kubectl exec dind -n test -- python test.py

当执行上述命令时,屏幕没有任何输出,并且1分钟后kubectl exec 命令执行完成退出。进入pod里面查看进程

kubectl exec -it dind -n test -- sh
ps -ef

test.py的进程还没有结束

问题分析

1. 关于屏幕没有输出的问题

 python print输出有缓冲,只有在脚本全部执行完毕才会打印到console。但是命令在脚本还没有执行完毕就退出了,就不会有输出了。
 当然也可以设置不使用缓冲
kubectl exec dind -n test -- python -u test.py
or
vim test.py
		import time
		import sys
		for i in range(5):
		  print(i)
		  sys.stdout.flush()
		  time.sleep(60)

2. 关于kubectl exec 执行1分钟退出的问题

 kubelet 设置了空闲超时时间,如果1分钟没有任何的output 和 input stream,命令会退出。
 可以参考一下链接 [kubectl exec issue](https://github.com/kubernetes/kubernetes/issues/66661)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值