如何使用kubectl查看失败的作业日志?

Chr*_*ski 7 kubernetes kubectl

我创建了一个Kubernetes作业,但现在失败了。在哪里可以找到该作业的日志?

我不确定如何找到关联的Pod(我认为一旦工作失败,它将删除Pod)?

运行kubectl describe job似乎没有显示任何相关信息:

Name:           app-raiden-migration-12-19-58-21-11-2018
Namespace:      localdev
Selector:       controller-uid=c2fd06be-ed87-11e8-8782-080027eeb8a0
Labels:         jobType=database-migration
Annotations:    kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"batch/v1","kind":"Job","metadata":{"annotations":{},"labels":{"jobType":"database-migration"},"name":"app-raiden-migration-12-19-58-21-1...
Parallelism:    1
Completions:    1
Start Time:     Wed, 21 Nov 2018 12:19:58 +0000
Pods Statuses:  0 Running / 0 Succeeded / 1 Failed
Pod Template:
  Labels:  controller-uid=c2fd06be-ed87-11e8-8782-080027eeb8a0
           job-name=app-raiden-migration-12-19-58-21-11-2018
  Containers:
   app:
    Image:  pp3-raiden-app:latest
    Port:   <none>
    Command:
      php
      artisan
      migrate
    Environment:
      DB_HOST:        local-mysql
      DB_PORT:        3306
      DB_DATABASE:    raiden
      DB_USERNAME:    <set to the key 'username' in secret 'cloudsql-db-credentials'>  Optional: false
      DB_PASSWORD:    <set to the key 'password' in secret 'cloudsql-db-credentials'>  Optional: false
      LOG_CHANNEL:    stderr
      APP_NAME:       Laravel
      APP_KEY:        ABCDEF123ERD456EABCDEF123ERD456E
      APP_URL:        http://192.168.99.100
      OAUTH_PRIVATE:  <set to the key 'oauth_private.key' in secret 'laravel-oauth'>  Optional: false
      OAUTH_PUBLIC:   <set to the key 'oauth_public.key' in secret 'laravel-oauth'>   Optional: false
    Mounts:           <none>
  Volumes:            <none>
Events:
  Type     Reason                Age   From            Message
  ----     ------                ----  ----            -------
  Normal   SuccessfulCreate      2m    job-controller  Created pod: app-raiden-migration-12-19-58-21-11-2018-pwnjn
  Warning  BackoffLimitExceeded  2m    job-controller  Job has reach the specified backoff limit
Run Code Online (Sandbox Code Playgroud)

Mos*_*sha 42

您还可以执行

kubectl logs job.batch/your-job-name
Run Code Online (Sandbox Code Playgroud)

如果您的作业有多个 Pod,您将看到类似以下内容的消息:

Found X pods, using pod/your-job-name-xxxxx
Run Code Online (Sandbox Code Playgroud)

(使用 kubectl 版本 = 1.21.2 进行测试)

  • 对我来说它返回错误:等待条件超时 (2认同)

Chr*_*ski 11

使用此命令显示所有 pod,甚至是失败的 pod:

kubectl get pods -A
Run Code Online (Sandbox Code Playgroud)

然后一个 pod 将显示如下:

app-raiden-migration-12-19-58-21-11-2018-pwnjn   0/1       Error     0          6m
Run Code Online (Sandbox Code Playgroud)

然后使用:

kubectl logs lighthouse-timer-1553800620-pwssv
Run Code Online (Sandbox Code Playgroud)

  • -A 仅表示所有名称空间。它不会显示与失败作业相关的 Pod。 (7认同)
  • 标志 --show-all 已被弃用,将在即将发布的版本中删除。知道用什么来代替它吗? (4认同)

Dav*_*mas 11

另一种方法:

  • kubectl describe job $JOB
  • 窗格名称显示在“事件”下
  • kubectl logs $POD

  • 如果超过了“activeDeadlineSeconds”,那么 Pod 就会被删除,而且我找不到查看日志的方法。事件会显示“&lt;none&gt;” (5认同)