通過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
文檔內容是否對您有幫助?