如何从Kubernetes作业中的所有pod中获取日志?

时间:2020-08-03 22:06:19

标签: kubernetes

我正在使用Kubernetes作业进行测试; Shell脚本运行该作业并具有设置/拆卸逻辑。工作有

  • components: schemas: Pet: type: object required: - petType discriminator: propertyName: petType Cat: allOf: - $ref: '#/components/schemas/Pet' - type: object # all other properties specific to a `Cat` properties: name: type: string petType: type: string default: 'Cat' Dog: allOf: - $ref: '#/components/schemas/Pet' - type: object # all other properties specific to a `Dog` properties: bark: type: string petType: type: string default: 'Dog'
  • restartPolicy: Never

这意味着如果作业失败,它将创建一个新的pod并重试一次。

作业完成后,我想转储作业中所有吊舱的日志。但是当我这样做

backoffLimit: 2

我只能从其中一个吊舱中获得日志,并以kubectl logs job/my-test 之类的前缀。

Found 2 pods, using pod/my-test-ntb4w标志不会为我提供来自所有吊舱的日志。

如何通过Shell脚本从作业中的所有Pod获取日志?

2 个答案:

答案 0 :(得分:1)

使用--all-containers=true而不是--selector似乎可以从所有窗格中获取日志:

job/my-test

答案 1 :(得分:1)

作为参考,请查看ax.set_xticklabels(x) --help:

ax = df_month.plot(figsize=(13, 4))
x = ax.get_xticks()
print(x)

或者,您可以添加自定义 标签 或从职位描述中使用_ 标签/选择器

kubectl logs

您可以在文档中找到非常相似的情况:checking on the output of all jobs at onceRunning an example Job

使用bash时,您也可以尝试:

   -- kubectl logs job/my-job
    # Return snapshot logs from first container of a job named hello
      kubectl logs job/hello -- will provide output only for one pod/container
    
    -- while using (either label or selector) it gives you more flexible way to deal with your resources
    # -l, --selector='': Selector (label query) to filter on.

使用k8s对象非常有用的命令:

labels:
      controller-uid: 55d965d0-0016-42ba-b4f5-120c1a78798b
      job-name: pi