全部产品
Search
文档中心

采集Job任务的日志

更新时间: 2021-10-14

本文介绍在ACK集群中使用ECI来运行Job任务时,如何采集Job任务的日志。

前提条件

背景信息

在ACK集群中,对于在标准节点的ECS上运行的Job任务,可以通过DaemonSet的方式来采集日志。但是对于在虚拟节点的ECI上运行的Job任务,由于ECI不支持DaemonSet,当Job任务运行结束后,Pod会立即退出,此时日志可能还未被采集完成。

针对上述场景,您可以采用以下方式来采集ECI上运行的Job任务的日志:

  1. 为Job任务挂载NAS文件系统,将输出的日志保存到NAS文件系统上。

  2. 将收集了Job任务日志的NAS文件系统挂载到另一个Pod上,获取NAS文件系统中存储的Job任务日志。

说明

如果您使用了阿里云日志服务SLS,通过配置环境变量的方式,为Job任务挂载Volume,可以直接同步阿里云日志服务。更多信息,请参见自定义配置ECI日志采集

操作步骤

下文以名为vk的Namespace为例说明操作步骤,该Namespace已添加alibabacloud.com/eci=true的Label,部署在该Namespace下的Pod将被调度到ECI上运行。实际配置时请替换为您要使用的Namespace。

  1. 准备Job任务的YAML配置文件。

    vim job.yaml

    以下为一个计算π值的Job任务配置示例:

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      template:
        spec:
          containers:
          - name: pi
            image: resouer/ubuntu-bc 
            command: ["sh", "-c", "echo 'scale=1000; 4*a(1)' | bc -l > /eci/a.log 2>&1"] #输出结果重定向到指定文件
            volumeMounts:
            - name: log-volume
              mountPath: /eci
              readOnly: false
          restartPolicy: Never
          #挂载NAS文件系统用于存储日志
          volumes:
          - name: log-volume
            nfs:
                path: /eci
                server: 04edd48c7c-****.cn-hangzhou.nas.aliyuncs.com
                readOnly: false
      backoffLimit: 4
  2. 部署Job任务到ECI上。

    kubectl apply -f job.yaml -n vk
  3. 查看Pod状态,确认Job任务是否已正常运行。

    kubectl get pod -n vk
  4. 准备用于采集Job任务日志的Pod配置文件。

    vim log-collection.yaml

    YAML文件内容示例如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: log-collection
    spec:
      containers:
      - image: nginx:latest
        name: log-collection
        command: ['/bin/sh', '-c', 'echo &(cat /eci/a.log)'] #查看Job任务的日志文件
        volumeMounts:
        - mountPath: /eci
          name: log-volume
      restartPolicy: Never
      #挂载存储了Job任务日志的NAS文件系统
      volumes:
      - name: log-volume
        nfs:
          server: 04edd48c7c-****.cn-hangzhou.nas.aliyuncs.com
          path: /eci
          readOnly: false
  5. 部署Pod,查看Job任务的日志文件。

    kubectl apply -f log-collection.yaml -n vk