创建任务Job

通过ACK One Fleet实例,您可以像在单个集群上一样,使用相同的方式创建任务。创建完成后,由Fleet实例根据任务需要的资源和关联集群的剩余资源,执行动态调度策略,选择适合的关联集群下发任务,任务在关联集群上运行,并返回状态到Fleet实例。本文介绍如何在Fleet实例中创建任务Job。

前提条件

操作步骤

  1. 开发用户使用以下YAML文件,在Fleet实例上创建任务。

    示例的命名空间为demo,示例任务名为pi

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
      namespace: demo
    spec:
      parallelism: 2
      template:
        spec:
          containers:
          - name: pi1
            image: perl:5.34.0
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
            resources:
              requests:
                memory: "64Mi"
                cpu: "250m"
              limits:
                memory: "128Mi"
                cpu: "500m"
          restartPolicy: Never
      backoffLimit: 4
  2. 执行以下命令,在Fleet实例上获取任务的调度结果。

    如果调度失败,则显示为空,请检查是否正确配置命名空间与配额。如果命名空间配置配额或者配额用完,作业将暂停调度。

    kubectl get job pi -n demo -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
  3. 执行以下命令,在Fleet实例上获取任务的运行状态。

    kubectl get job pi -n demo

    预期输出:

    NAME   COMPLETIONS   DURATION   AGE
    pi     2/1 of 2      28s        6m20s
  4. 执行以下命令获取任务相关Pod的运行状态。

    kubectl amc get pod -j job/pi -n demo

    预期输出:

    Run on ManagedCluster managedcluster-c1xxxe5
    NAME        READY   STATUS      RESTARTS   AGE
    pi-h6z98   0/1     Completed   0          11d
    pi-xfg6r   0/1     Completed   0          11d
  5. 执行以下命令获取Pod的运行日志。

    kubectl amc logs pi1-h6z98  -j job/pi -n demo

    预期输出:

    Run on ManagedCluster managedcluster-c1xxxe5
    3.1415926...