작업 디버깅
문제점 해결 팁을 사용하여 빌드의 IBM Cloud® Code Engine 작업 및 실행 문제점을 해결하는 방법을 알아보십시오.
고려할 작업 제한사항
프로젝트당 가질 수 있는 최대 작업 수는 100개입니다. 프로젝트당 총 100개의 작업 실행으로 제한되어 있어 한계를 넘으면 이전 작업 실행을 제거하거나 정리해야 합니다.
메모리와 CPU를 포함한 작업의 한계에 대한 자세한 정보는 Code Engine의 한계 및 할당량을 참조하십시오.
CLI를 사용하면 ibmcloud ce project get 명령을 사용하여 한계 및 현재 사용량에 대한 정보를 표시할 수 있습니다. 예를 들어, 다음과 같습니다.
ibmcloud ce project get --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를 통해 작업 로그를 볼 수 있습니다.
콘솔에서 로그를 볼 때 IBM Cloud Logs 프로젝트와 동일한 지역에 Code Engine 인스턴스를 작성해야 합니다. 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작업 실행에 대한 세분화된 세부사항을 원하는 경우
jobrun get명령에--o yaml옵션을 사용하십시오(예:ibmcloud ce jobrun get --name myjobrun --o yaml). 이 옵션은 CLI에서 작업 실행에 대한 자세한 정보를 표시할 때 유용합니다. -
작업 실행의 인스턴스에 대한 로그를 표시하십시오.
- 작업 실행의 특정 인스턴스에 대한 로그를 표시하려면
ibmcloud ce jobrun logs --instance INSTANCE_NAME명령을 사용하십시오. 예를 들면, 다음과 같습니다.
ibmcloud ce jobrun logs --instance myjobrun-4-0 ``` 출력 예 ```txt {: screen} 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`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-logs) 명령을 사용하십시오. 예를 들면 다음과 같습니다. ```txt {: pre} ibmcloud ce jobrun logs --jobrun myjobrun ``` 출력 예 ```txt {: screen} 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작업 실행에 대한 세분화된 세부사항을 원하는 경우
jobrun get명령에--o yaml옵션을 사용하십시오(예:ibmcloud ce jobrun get --name myjobrun --o yaml). 이 옵션은 CLI에서 작업 실행에 대한 자세한 정보를 표시할 때 유용합니다. -
작업 실행의 인스턴스에 대한 시스템 이벤트를 표시하십시오.
- 작업 실행의 특정 인스턴스에 대한 이벤트를 표시하려면
ibmcloud ce jobrun events --instance INSTANCE_NAME명령을 사용하십시오. 예를 들면, 다음과 같습니다.
ibmcloud ce jobrun events --instance myjobrun-4-0 ``` 출력 예 ```txt {: screen} 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`**](/docs/codeengine?topic=codeengine-cli#cli-jobrun-events) 명령을 사용하십시오. 예를 들면 다음과 같습니다. ```txt {: pre} ibmcloud ce jobrun events --jobrun myjobrun ``` 출력 예 ```txt {: screen} 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 작업을 수행할 때 이미지에 액세스하려면 컨테이너 이미지 참조 및 레지스트리 시크릿을 지정해야 합니다. 작업이 올바르게 작동하려면 이미지 참조 및 해당 액세스 특성이 작업의 수명 동안 유효해야 합니다.
내 이미지 참조를 확인하는 방법 을 참조하십시오.