簡體   English   中英

如何收集一個Kubernetes CronJob一段時間內每個作業的日志?

[英]How to collect logs of every job of a Kubernetes CronJob for a period of time?

假設我有一個 Kubernetes CronJob

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cron-job-logging
spec:
  schedule: "@hourly"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cron-job-logging
            image: python:3
            args:
            - /usr/bin/python3
            - -c
            - import random; print('a') if random.random() < 0.5 else print('b')
          restartPolicy: OnFailure

它在 GKE 集群 1.14.x 上運行,並為“系統和工作負載日志記錄和監控”激活了 Cloud Operation for GKE。

如何在 t 期間(假設一個月)收集 output 以便我可以查看 pod 打印a還是b

如果看到有關此請求的一些問題,例如https://github.com/kubernetes/kubernetes/issues/27768 日志似乎對某些用戶可用,但對其他用戶不可用,這可能是由於CronJobs是一個 beta 功能。

我已經部署了您的 cronjob,僅出於示例目的,我將計划設置為每 1 分鍾運行一次,下面有幾種方法可以訪問它:

  • GKE 控制台– 在 Google Cloud Console 的Google Kubernetes Engine部分中, select Kubernetes 資源在下一個 Log Workloads選項中列出,然后是控制台的快捷方式,用於審核下一個 Log Workloads 選項:

  • Cloud Logging 控制台– 您可以使用日志過濾器直接從Cloud Logging 控制台查看您的日志,方法是使用 select 和 Kubernetes 資源(例如集群、節點、命名空間、pod 或容器日志)。 以下是與 Kubernetes 相關的示例查詢,可幫助您入門。

    • 這是我使用的查詢(編輯項目詳細信息):
       resource.type="k8s_container" resource.labels.project_id="PROJECT_NAME" resource.labels.location="ZONE" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.namespace_name="NAMESPACE" labels.k8s-pod/job-name:"cron-job-logging-"
    • 結果如下: 在此處輸入圖像描述
  • Cloud Monitoring 控制台– 如果您啟用了 Cloud Monitoring 工作區,請在 Cloud Monitoring 控制台的Kubernetes Engine部分中,select 您的集群、節點、pod 或容器中查看您的日志。

  • gcloud命令行工具– 使用gcloud logging read命令 select 相應的集群、節點、pod 和容器日志。

  • 這里有一個例子:

$ gcloud logging read "resource.labels.project_id=PROJECT AND resource.labels.cluster_name=CLUSTER_NAME AND labels.k8s-pod/job-name:cron-job-logging-"
---
insertId: 6vorvd43akuvy8fi3
labels:
  k8s-pod/controller-uid: c525bbae-c6c9-11ea-931b-42010a80001f
  k8s-pod/job-name: cron-job-logging-1594838040
logName: projects/PROJECT/logs/stdout
receiveTimestamp: '2020-07-15T18:35:14.937645549Z'
resource:
  labels:
    cluster_name: CLUSTER_NAME
    container_name: cron-job-logging
    location: ZONE
    namespace_name: default
    pod_name: cron-job-logging-1594838040-pngsk
    project_id: PROJECT
  type: k8s_container
severity: INFO
textPayload: |
  a
timestamp: '2020-07-15T18:34:09.907735144Z'

更多信息: GKE - 使用日志

如果您有任何問題,請在評論中告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM