如何在Kubernetes Pod容器的while循环中添加当前时间戳
问题根因
命令存在两处语法问题,导致无法输出预期内容:
- 命令调用语法错误:
$date是Shell读取名为date的自定义变量的写法,当前环境未定义该变量,无法获取时间值。要拿到date命令的执行输出,需要用命令替换语法$(date)包裹命令。 - 重定向逻辑错误:初始配置里的
>是覆盖写入模式,每次循环都会清空output.log的历史内容,仅保留最后一条记录,要持续累加日志需要用>>追加写入模式。
正确配置
busybox镜像默认的date命令输出格式正好匹配要求的时间戳样式,无需额外参数调整,直接将Pod中容器的command字段替换为如下内容即可:
command: ['sh', '-c', 'while true; do echo "success! $(date)" >> /output/output.log; sleep 5; done']
完整可用Pod配置:
apiVersion: v1 kind: Pod metadata: name: pv-pod namespace: auth spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'while true; do echo "success! $(date)" >> /output/output.log; sleep 5; done'] volumeMounts: - name: pv-storage mountPath: /output volumes: - name: pv-storage persistentVolumeClaim: claimName: host-storage-pvc
效果验证
Pod启动后执行以下命令,可实时查看日志写入情况:
kubectl exec -it pv-pod -n auth -- tail -f /output/output.log
正常输出格式如下:
success! Wed Jun 8 20:28:01 WAST 2022 success! Wed Jun 8 20:28:06 WAST 2022 success! Wed Jun 8 20:28:11 WAST 2022
内容的提问来源于stack exchange,提问作者ERJAN
相关产品推荐
相关产品推荐

