调试作业
使用故障诊断提示来了解如何对 IBM Cloud® Code Engine 作业和作业运行进行故障诊断。
要考虑的作业限制
每个项目可以具有的最大作业数为 100。 在需要除去或清除旧作业之前,每个项目总共只能运行 100 个作业。
有关包括内存和 CPU 在内的作业限制的更多信息,请参阅 Code Engine的限制和配额。
通过 CLI,您可以使用 ibmcloud ce project get
命令来显示有关限制和当前使用情况的信息。 例如:
ibmcloud ce project create --name myproject
示例输出
Getting project 'myproject'...
OK
Name: myproject
ID: abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status: active
Enabled: true
Application Private Visibility Supported: true
Selected: true
Region: us-south
Resource Group: default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age: 52d
Created: Tue, 28 Sep 2021 05:12:16 -0500
Updated: Tue, 28 Sep 2021 05:12:19 -0500
Quotas:
Category Used Limit
App revisions 2 120
Apps 1 40
Build runs 1 100
Builds 2 100
Configmaps 2 100
CPU 0 128
Ephemeral storage 0 512G
Functions 0 20
Instances (active) 0 250
Instances (total) 0 2500
Job runs 13 100
Jobs 2 100
Memory 0 512G
Secrets 6 100
Subscriptions (cron) 0 100
Subscriptions (IBM Cloud Object Storage) 0 100
Subscriptions (Kafka) 0 100
获取我的作业的日志
日志可帮助您在运行作业时对问题进行故障诊断。 您可以从控制台或使用 CLI 查看作业日志。
从控制台查看日志时,必须在“Code Engine项目的同一区域创建一个”IBM Cloud Logs实例。 在使用 Code Engine 作业之前,不需要创建此实例。Code Engine 使您能够轻松地为作业启用日志记录。 您可以在添加日志记录功能之后查看作业日志。 有关更多信息,请参阅 从控制台查看作业日志。
使用 CLI 时,可以显示正在运行的作业的所有实例的日志,也可以显示作业的特定实例的日志。
-
使用
ibmcloud ce jobrun list
命令列出所有已定义的作业运行; 例如,ibmcloud ce jobrun list
-
使用
ibmcloud ce jobrun get
命令可获取作业运行的详细信息,包括作业运行的实例的名称; 例如,ibmcloud ce jobrun get --name myjobrun
示例输出
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances. Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances. OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29m
如果需要有关作业运行的更多细颗粒度详细信息,请将
--o yaml
选项与jobrun get
命令配合使用; 例如,ibmcloud ce jobrun get --name myjobrun --o yaml
。 此选项对于在 CLI 中显示作业运行的更详细信息很有用。 -
显示作业运行实例的日志。
-
要显示作业运行的特定实例的日志,请使用
ibmcloud ce jobrun logs --instance INSTANCE_NAME
命令; 例如,ibmcloud ce jobrun logs --instance myjobrun-4-0
示例输出
Getting logs for job run instance 'myjobrun-4-0'... OK myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4
-
要显示作业运行的所有实例的日志,请使用
ibmcloud ce jobrun logs --jobrun JOBRUN_NAME
命令; 例如,ibmcloud ce jobrun logs --jobrun myjobrun
示例输出
Getting logs for all instances of job run 'myjobrun'... Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... OK myjobrun-1-0/myjobrun: Hi from a batch job! My index is: 1 myjobrun-2-0/myjobrun: Hi from a batch job! My index is: 2 myjobrun-3-0/myjobrun: Hi from a batch job! My index is: 3 myjobrun-4-0/myjobrun: Hi from a batch job! My index is: 4
-
有关更多信息,请参阅 使用 CLI 查看作业日志。
获取作业的系统事件信息
系统事件信息可帮助您在运行作业时对问题进行故障诊断。 您可以使用 CLI 来查看系统事件信息。
您可以显示作业运行的所有实例的系统事件,也可以显示作业运行的特定实例的系统事件。
-
使用
ibmcloud ce jobrun list
命令列出所有已定义的作业运行; 例如,ibmcloud ce jobrun list
-
使用
ibmcloud ce jobrun get
命令可获取作业运行的详细信息,包括作业运行实例的名称; 例如,ibmcloud ce jobrun get --name myjobrun
示例输出
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events of jobrun 'myjobrun'... OK Name: myjobrun [...] Created: 2021-03-03T14:47:04-05:00 Image: icr.io/codeengine/firstjob Resource Allocation: CPU: 1 Ephemeral Storage: 400M Memory: 4G Runtime: Mode: task Array Indices: 1 - 4 Array Size: 4 JOP_ARRAY_SIZE Value: 4 Max Execution Time: 7200 Retry Limit: 3 Status: Completed: 28m Instance Statuses: Succeeded: 4 Conditions: Type Status Last Probe Last Transition Pending True 28m 28m Running True 28m 28m Complete True 28m 28m Events: Type Reason Age Source Messages Normal Updated 29m (x8 over 29m) batch-job-controller Updated JobRun "myjobrun" Normal Completed 29m batch-job-controller JobRun completed successfully Instances: Name Running Status Restarts Age myjobrun-1-0 0/1 Succeeded 0 29m myjobrun-2-0 0/1 Succeeded 0 29m myjobrun-3-0 0/1 Succeeded 0 29m myjobrun-4-0 0/1 Succeeded 0 29m
如果需要有关作业运行的更多细颗粒度详细信息,请将
--o yaml
选项与jobrun get
命令配合使用; 例如,ibmcloud ce jobrun get --name myjobrun --o yaml
。 此选项对于在 CLI 中显示作业运行的更详细信息很有用。 -
显示作业运行实例的系统事件。
-
要显示作业运行的特定实例的事件,请使用
ibmcloud ce jobrun events --instance INSTANCE_NAME
命令; 例如,ibmcloud ce jobrun events --instance myjobrun-4-0
示例输出
Getting events for job run instance 'myjobrun-4-0'... OK myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 2m14s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 2m13s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 2m12s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 2m11s kubelet, 10.240.64.10 Created container myjobrun Normal Started 2m11s kubelet, 10.240.64.10 Started container myjobrun
-
要显示作业运行的所有实例的事件,请使用
ibmcloud ce jobrun events --jobrun JUBRUN_NAME
命令; 例如,ibmcloud ce jobrun events --jobrun myjobrun
示例输出
Getting jobrun 'myjobrun'... Getting instances of jobrun 'myjobrun'... Getting events for all instances of job run 'myjobrun'... OK myjobrun-1-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-1-0 to 10.240.128.22 Normal Pulling 65s kubelet, 10.240.128.22 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.128.22 Successfully pulled image "icr.io/codeengine/firstjob" in 427.276949ms Normal Created 64s kubelet, 10.240.128.22 Created container myjobrun Normal Started 64s kubelet, 10.240.128.22 Started container myjobrun myjobrun-2-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-2-0 to 10.240.0.11 Normal Pulling 65s kubelet, 10.240.0.11 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.11 Successfully pulled image "icr.io/codeengine/firstjob" in 1.268252989s Normal Created 63s kubelet, 10.240.0.11 Created container myjobrun Normal Started 63s kubelet, 10.240.0.11 Started container myjobrun myjobrun-3-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-3-0 to 10.240.0.37 Normal Pulling 65s kubelet, 10.240.0.37 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 63s kubelet, 10.240.0.37 Successfully pulled image "icr.io/codeengine/firstjob" in 1.118647987s Normal Created 63s kubelet, 10.240.0.37 Created container myjobrun Normal Started 63s kubelet, 10.240.0.37 Started container myjobrun myjobrun-4-0: Type Reason Age Source Messages Normal Scheduled 66s default-scheduler Successfully assigned 4svg40kna19/myjobrun-4-0 to 10.240.64.10 Normal Pulling 65s kubelet, 10.240.64.10 Pulling image "icr.io/codeengine/firstjob" Normal Pulled 64s kubelet, 10.240.64.10 Successfully pulled image "icr.io/codeengine/firstjob" in 1.234456436s Normal Created 63s kubelet, 10.240.64.10 Created container myjobrun Normal Started 63s kubelet, 10.240.64.10 Started container myjobrun
-
了解工作运行指数为何会失败
当控制台中的作业运行索引失败时,您可以查找错误和原因,以帮助排除故障、解决问题,然后重新运行作业运行索引。
要处理您的工作和任务,请从 Code Engine 控制面板中,点击项目列表中的项目名称,然后点击 “作业”。 从 “职位”选项卡中选择一个职位。 点击提交作业,然后在“提交作业”面板中点击提交作业按钮,查看作业运行实例。
未完成的工作在状态栏中显示为 Failed (<error>)
。 下表解释了常见的工作运行指数错误和应采取的措施:
错误 | 说明 | 建议用户采取的行动 |
---|---|---|
ContainerExitedCode |
用户错误,包括由用户工作负载提供的退出代码。 | 确定应用程序中退出代码的原因并对其进行调试。 |
ExceededEphemeralStorage |
实例在其容器内分配的临时存储空间超过了允许的范围。 | 增加资源的临时存储空间。 |
ExecutableNotFound |
无法在容器中找到指定的可执行文件。 没有它,集装箱无法启动。 | 请确认容器镜像中指定的入口点是否正确,以及镜像中是否存在可执行文件。 |
MaxExecutionTimeExceeded |
任务运行未在最大执行时间内完成。 如果多个实例正在运行,则所有尚未完成的实例都会显示此错误。 | 增加运行超时值。 |
OOMKilled |
内存不足错误。 实例超出分配的内存限制。 | 增加资源的CPU和内存。 |
更正错误后,点击 “重新运行失败的索引”,为失败的索引再次运行作业。
验证我的作业的容器映像引用
使用 Code Engine 作业时,必须指定容器映像引用和注册表私钥以访问该映像。 要使作业正常工作,映像引用及其访问属性必须在作业的生命周期内保持有效。
请参阅 如何验证我的图像引用?