通过Fleet实例,您可以像在单个集群上一样,使用相同的方式创建定时任务CronJob。Fleet实例负责时间调度,生成任务Job,进而调度到关联的集群上运行。本文介绍如何在Fleet实例中创建定时任务CronJob。
前提条件
已开启舰队管理功能。具体操作,请参见开启舰队管理功能。
舰队的Fleet实例已添加多个关联集群。具体操作,请参见添加关联集群。
已从ACK One控制台获取Fleet实例的KubeConfig,并通过kubectl连接至Fleet实例。
已安装AMC命令行工具。具体操作,请参见AMC命令行帮助。
背景信息
定时任务CronJob用于创建周期性以及重复性的任务,例如执行备份操作或者发送邮件。任务Job负责批量处理短暂的一次性任务,即仅执行一次的任务,而CronJob则是在Job基础上增加了时间调度。
操作步骤
开发者用户使用以下YAML文件,在Fleet实例上创建定时任务CronJob。
示例的命名空间为
demo
,示例的任务为hello
。apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello namespace: demo spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox imagePullPolicy: IfNotPresent command: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster restartPolicy: OnFailure
等待1分钟后,执行以下命令,获取定时任务CronJob的状态。
kubectl get cronjob -n demo
预期输出:
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE hello */1 * * * * False 1 6s 2m1s
查看任务Job的状态。
执行以下命令,查看任务的状态。
kubectl get job -n demo
预期输出:
NAME COMPLETIONS DURATION AGE hello-1634194320 1/1 1s 75s hello-1634194380 1/1 1s 15s
执行以下命令,在Fleet实例上查看任务的调度结果。
kubectl get job hello-1634194320 -n demo -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
执行以下命令,查看任务相关Pod的运行状态。
kubectl amc get pod -j job/hello-1634194320 -n demo
预期输出:
Run on ManagedCluster managedcluster-c1xxxe5 NAME READY STATUS RESTARTS AGE hello-1634194320-dvrgx 0/1 Completed 0 115s hello-1634194380-7qjm2 0/1 Completed 0 55s
执行以下命令,查看Pod的运行日志。
kubectl amc logs hello-1634194320-dvrgx -j job/hello-1634194320 -n demo
预期输出:
Run on ManagedCluster managedcluster-c1xxxe5 Thu Oct 14 06:52:08 UTC 2021 Hello from the Kubernetes cluster