Busybox Pod中while循环echo输出未更新问题求助
问题原因
你遇到的问题核心是本地shell提前解析了脚本里的变量与命令:
- 执行
kubectl apply时,$(date +%s)会在你的本地机器上先执行一次,得到固定时间戳后再传入Pod启动命令,导致容器输出的time值永远不变。 $i在本地环境未定义,被解析为空字符串,所以msg里的序号始终为空。
解决方法
把脚本里的$符号转义为\$,让容器内的shell去解析这些变量和命令,而非本地shell。修改后的完整命令如下:
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: hello-pod spec: containers: - name: count image: busybox args: [ /bin/sh, -c, 'i=0; while true; do echo "{\"time\":\$(date +%s),\"msg\":\"This is my dummy log number \$i\"}"; i=\$((i+1)); sleep 1; done' ] EOF
验证方式
执行上述命令后,用kubectl logs -f hello-pod查看日志,就能看到time字段每秒递增、msg序号依次增加的JSON日志了。
内容的提问来源于stack exchange,提问作者usersina
相关产品推荐
相关产品推荐

