代码之家  ›  专栏  ›  技术社区  ›  Leisen Chang

如何获取cronjob创建的作业日志?

  •  0
  • Leisen Chang  · 技术社区  · 7 年前

    看来 kubectl logs 不支持cronjob。上面说

    目前我逐一检查了所有相关作业的日志。


    我对bash脚本进行了一些研究,并对其进行了修改 edbighead's answer 为了更好地满足我的需要。

    # cronJobGetAllLogs.sh: Get all logs of a cronjob.
    # example:
    # ./cronJobGetAllLogs.sh [Insert name of cronJob]
    
    jobs=( $(kubectl get jobs --no-headers -o custom-columns=":metadata.name" | awk "/$1-[0-9]+/{print \$1}" | sort -r ) )
    for job in "${jobs[@]}"
    do
        echo Logs from job $job
        pod=$(kubectl get pods -l job-name=$job --no-headers -o custom-columns=":metadata.name")
        kubectl logs $pod
    done
    

    # cronJobGetLatestLog.sh: Get log of latest job initiated by a cronjob.
    # example:
    # ./cronJobGetLateestLog.sh [Insert name of cronJob]
    
    job=$(kubectl get jobs --no-headers -o custom-columns=":metadata.name" | awk "/$1-[0-9]+/{print \$1}" | sort -r | head -1)
    pod=$(kubectl get pods -l job-name=$job --no-headers -o custom-columns=":metadata.name")
    kubectl logs $pod
    
    1 回复  |  直到 7 年前
        1
  •  14
  •   Community Mohan Dere    6 年前

    根据 CronJobs 和 Jobs

    ...

    您只需查看为作业创建的pod的日志。

    1. 找到你的工作 kubectl get jobs

    2. 查找已执行作业的pod kubectl get pods -l job-name=your-job-@timestamp

    3. 使用 kubectl logs your-job-@timestamp-id 查看日志

    下面是一个bash脚本的示例,它执行上述所有操作,并为每个作业的pod输出日志。

    jobs=( $(kubectl get jobs --no-headers -o custom-columns=":metadata.name") )
    for job in "${jobs[@]}"
    do
       pod=$(kubectl get pods -l job-name=$job --no-headers -o custom-columns=":metadata.name")
       kubectl logs $pod
    done
    
    推荐文章