【发布时间】:2017-09-30 03:13:12
【问题描述】:
我有一个超级简单的容器,里面有 cron 计划:
* * * * * root /bin/bash /alive.sh
alive.sh:
#!/bin/bash
/bin/echo "I'm alive"
/bin/echo $(/bin/date) >> /tmp/alive.log
我在本地构建 docker 镜像并运行它:
docker build -t orian/crondemo:v0 .
docker run --rm -it --name crondemo orian/crondemo:v0
大约一分钟后,我可以检查是否正在创建一个新文件:
docker exec crondemo ls /tmp
I 标记并将图像推送到 Google Container Registry:
TAG=eu.gcr.io/<PROJECT_ID>/crondemo:v0
docker tag orian/crondemo:v0 $TAG
kubectl docker -- push $TAG
手动启动 pod:
kubectl run crondemo --image=$TAG --replicas=1 --restart=Never
并验证它是否有效:
kubectl exec crondemo ls /tmp
这里有个问题,/tmp/alive.log 文件没有被写入。问题出在哪里?
我已经准备了一个带有示例的 repo:https://github.com/orian/k8s-cron-demo
通知
- 我也测试过覆盖
/var/spool/cron/crontabs/root,但没有解决问题。 - 我正在使用 docker 镜像:
openjdk:8-jre。在切换之前,我使用了alpine和crond。那时它似乎奏效了。
Edit2 - 找到(这太疯狂了):
【问题讨论】:
标签: docker cron kubernetes google-kubernetes-engine