我想安排作业在稍后的日期和时间执行。我在用Podman。以前,这很容易使用Docker和Swarm,其中可以使用swarm-cronjob
定义一个类似cron的表达式,以便将来循环执行作业。
在Podman中,我没有看到这样的功能或模块。
我怎样才能做到这一点?《Podman》是否也有类似的《Swarm》?如果没有,是否有与Podman等同的cron ?我查阅了官方文件,但没有找到这类文件。
我也有同样的问题。
使用cron或systemd定时器定时运行podman容器是一个可以接受的解决方案,只要您可以访问安装容器的主机。如果容器在Kubernetes平台上,而您实际上无法访问主机,并且每次容器运行时容器运行的主机可能会更改,则需要使用Kubernetes CronJob YML。
似乎解决方案如下:
如果您可以访问主机,请使用systemd计时器和服务来安排容器或pod启动。
下面是一个示例test-container.service:[Unit]
Description=TestContainer
Requires=podman.service
After=podman.service
[Service]
Restart=always
ExecStart=/usr/bin/podman run test-container
[Install]
WantedBy=multi-user.target
和测试容器。每5分钟运行一次的定时器
[Unit]
Description=Test Container Timer
[Timer]
OnCalendar=*:00/5:00
Unit=test-container.service
[Install]
WantedBy=timers.target
现在,如果你在Kubernetes集群上,你可以使用下面的Kubernetes CronJob YML文件来调度它,它也会每5分钟启动一次容器:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: test-container-schedule
spec:
schedule: "0 0/5 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: test-container
image: test-container-image
restartPolicy: OnFailure
唯一要考虑的另一件事是,你想要配置你的容器在它已经执行并执行它的功能后退出,否则容器启动命令将失败,因为容器已经运行。