如何使用 kubectl 查看失败作业的日志?
How to view logs of failed jobs with 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
使用此命令显示所有 pods,甚至失败的:
kubectl get pods -A
然后会出现一个pod,如下所示:
app-raiden-migration-12-19-58-21-11-2018-pwnjn 0/1 Error 0 6m
然后使用:
kubectl logs lighthouse-timer-1553800620-pwssv
您可以通过运行宁获得此职位的pods:
kubectl get pods --selector=job-name=app-raiden-migration-12-19-58-21-11-2018
但在这种情况下,我认为您不会找到任何 pods,因为没有创建 pod,并且如 this link: Job Termination and Cleanup 中所述,pods 在作业完成后不会被删除。
但我仍然不知道你如何找出那个 pod 失败的原因 运行(但如果有一个 pod 并且你可以找到它,你可以找到那个 pod 的日志)。我犯了同样的错误,我 运行 再次完成工作,工作成功。
编辑:
我只看到你的工作的事件,你的工作已经创建了 pod,你可以按照我上面提到的 pod 名称查看你的 pod 的日志。
另一种方法:
kubectl describe job $JOB
- Pod 名称显示在 "Events"
下
kubectl logs $POD
你也可以执行
kubectl logs job.batch/your-job-name
如果您的作业有多个 pod,您将看到类似于以下内容的消息:
Found X pods, using pod/your-job-name-xxxxx
(使用 kubectl 版本 = 1.21.2 测试)
我创建了一个 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
使用此命令显示所有 pods,甚至失败的:
kubectl get pods -A
然后会出现一个pod,如下所示:
app-raiden-migration-12-19-58-21-11-2018-pwnjn 0/1 Error 0 6m
然后使用:
kubectl logs lighthouse-timer-1553800620-pwssv
您可以通过运行宁获得此职位的pods:
kubectl get pods --selector=job-name=app-raiden-migration-12-19-58-21-11-2018
但在这种情况下,我认为您不会找到任何 pods,因为没有创建 pod,并且如 this link: Job Termination and Cleanup 中所述,pods 在作业完成后不会被删除。 但我仍然不知道你如何找出那个 pod 失败的原因 运行(但如果有一个 pod 并且你可以找到它,你可以找到那个 pod 的日志)。我犯了同样的错误,我 运行 再次完成工作,工作成功。
编辑:
我只看到你的工作的事件,你的工作已经创建了 pod,你可以按照我上面提到的 pod 名称查看你的 pod 的日志。
另一种方法:
kubectl describe job $JOB
- Pod 名称显示在 "Events" 下
kubectl logs $POD
你也可以执行
kubectl logs job.batch/your-job-name
如果您的作业有多个 pod,您将看到类似于以下内容的消息:
Found X pods, using pod/your-job-name-xxxxx
(使用 kubectl 版本 = 1.21.2 测试)