Argo 워크플로를 디버깅하는 방법
8004 단어 kubernetes
비교적 젊은 프로젝트이므로 오류 메시지 및 문서와 같은 것은 여전히 약간의 작업이 필요합니다.
그동안 워크플로가 예상대로 작동하지 않을 때 취할 수 있는 몇 가지 단계는 다음과 같습니다.
Argo CLI로 워크플로 검사
간단한 문제의 경우 Argo CLI는 MESSAGE
출력의 argo get
열에 간단한 설명을 포함합니다.
$ argo get workflow-template-dag-diamond
Name: workflow-template-dag-diamond
Namespace: default
ServiceAccount: default
Status: Succeeded
Conditions:
Completed True
Created: Mon Mar 01 08:51:26 -0500 (7 minutes ago)
Started: Mon Mar 01 08:51:26 -0500 (7 minutes ago)
Finished: Mon Mar 01 08:51:36 -0500 (7 minutes ago)
Duration: 10 seconds
Progress: 1/1
ResourcesDuration: 5s*(1 cpu),5s*(100Mi memory)
STEP TEMPLATE PODNAME DURATION MESSAGE
✔ workflow-template-dag-diamond diamond
└─✔ A workflow-template-whalesay-template/whalesay-template workflow-template-dag-diamond-2997968480 6s
문제를 파악하기에 충분하지 않은 메시지가 있는 경우 실패한 단계의 PODNAME
를 복사하고 using kubectl to describe the Pod에 대한 섹션으로 건너뜁니다.
유용한 메시지가 없으면 워크플로를 설명하세요.
kubectl을 사용하여 워크플로 설명
때로는 argo get
의 MESSAGE
열에 잘 맞지 않는 전체 워크플로 문제가 있습니다.
kubectl describe workflow
이벤트 목록을 포함하여 워크플로에 대한 더 많은 세부 정보를 인쇄합니다. 이벤트에는 종종 무엇이 잘못되었는지에 대한 세부 정보가 포함됩니다.
$ kubectl describe workflow workflow-template-dag-diamond
Name: workflow-template-dag-diamond
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal WorkflowRunning 8m42s workflow-controller Workflow Running
Normal WorkflowNodeSucceeded 8m32s workflow-controller Succeeded node workflow-template-dag-diamond.A
Normal WorkflowNodeSucceeded 8m32s workflow-controller Succeeded node workflow-template-dag-diamond
Normal WorkflowSucceeded 8m32s workflow-controller Workflow completed
kubectl을 사용하여 Pod 설명
Pod가 실패하면 단서가 될 수 있는 여러 장소가 있습니다. 하나는 Pod와 관련된 이벤트입니다.
파드 이름은 예측할 수 없으므로(종종 -93750129
와 같은 임의의 접미사를 가짐) argo get
를 사용하여 의심되는 파드의 이름을 가져옵니다.
그런 다음 kubectl describe po
를 사용하여 이벤트를 포함한 파드 세부 정보를 확인합니다.
$ kubectl describe po workflow-template-dag-diamond-2997968480
Name: workflow-template-dag-diamond-2997968480
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 36s default-scheduler Successfully assigned default/workflow-template-dag-diamond-2997968480 to docker-desktop
Normal Pulled 35s kubelet Container image "argoproj/argoexec:v2.12.9" already present on machine
Normal Created 35s kubelet Created container wait
Normal Started 35s kubelet Started container wait
Warning Failed 31s kubelet Failed to pull image "docker/whalesay": rpc error: code = Unknown desc = Error response from daemon: Head https://registry-1.docker.io/v2/docker/whalesay/manifests/latest: x509: certificate is valid for auth.docker.io, not registry-1.docker.io
Normal Pulling 17s (x2 over 35s) kubelet Pulling image "docker/whalesay"
Warning Failed 16s (x2 over 31s) kubelet Error: ErrImagePull
Warning Failed 16s kubelet Failed to pull image "docker/whalesay": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate is valid for auth.docker.io, not registry-1.docker.io
Normal BackOff 5s (x2 over 30s) kubelet Back-off pulling image "docker/whalesay"
Warning Failed 5s (x2 over 30s) kubelet Error: ImagePullBackOff
프록시 문제로 인해 Docker Hub에서 가져오기가 방지되어 이 워크플로가 실패했습니다.
실패가 단계의 컨테이너 중 하나 내부에 있기 때문에 때때로 문제가 이벤트에 표시되지 않습니다.
kubectl을 사용하여 파드 로그 읽기
Argo Workflows의 일부로 실행되는 Pod에는 wait
, main
, 때로는 init
의 두 개 또는 세 개의 컨테이너가 있습니다.
wait
사이드카는 main
컨테이너(귀하의 코드)를 주시하고 Argo Workflow 컨트롤러(또 다른 Pod)와 단계 진행 상황에 대해 통신하기 위해 Argo에 의해 주입됩니다.
main
컨테이너는 yaml에서 워크플로를 정의할 때 설정한 컨테이너입니다. (image
, command
, args
, source
항목을 찾아 이 Pod 구성의 일부를 확인하십시오.)
init
컨테이너(있는 경우)도 Argo에 의해 주입됩니다. 아티팩트를 Pod로 가져오는 것과 같은 작업을 수행합니다.
로그를 읽으려면 kubectl logs
를 사용하십시오. 예를 들어:
$ kubectl logs workflow-template-dag-diamond-2997968480 init
error: container init is not valid for pod workflow-template-dag-diamond-2997968480
C02D507EMD6P:test_workflows ekmed$ kubectl logs workflow-template-dag-diamond-2997968480 wait
time="2021-03-01T14:09:18.339Z" level=info msg="Starting Workflow Executor" version=v2.12.9
time="2021-03-01T14:09:18.346Z" level=info msg="Creating a docker executor"
time="2021-03-01T14:09:18.346Z" level=info msg="Executor (version: v2.12.9, build_date: 2021-02-16T22:51:48Z) initialized (pod: default/workflow-template-dag-diamond-2997968480) with template:\n{\"name\":\"whalesay-template\",\"arguments\":{},\"inputs\":{\"parameters\":[{\"name\":\"message\",\"value\":\"A\"}]},\"outputs\":{},\"metadata\":{},\"container\":{\"name\":\"\",\"image\":\"docker/whalesay\",\"command\":[\"cowsay\"],\"resources\":{}}}"
time="2021-03-01T14:09:18.346Z" level=info msg="Waiting on main container"
time="2021-03-01T14:14:17.998Z" level=info msg="Alloc=4699 TotalAlloc=14633 Sys=70080 NumGC=6 Goroutines=7"
init
및 wait
의 로그는 Argo에서 가져오기 때문에 읽기가 약간 어려울 수 있습니다. main
에 대한 로그는 구성된 image
에서 가져오므로 아마도 더 익숙할 것입니다.
kubectl을 사용하여 워크플로 컨트롤러 로그 읽기
Argo는 모든 단계를 실행하는 프로세스를 통해 워크플로를 안내하는 "워크플로 컨트롤러"라는 포드와 함께 제공됩니다.
다른 모든 디버깅 기술이 실패하면 워크플로 컨트롤러 로그에 유용한 정보가 포함될 수 있습니다.
먼저 Pod 이름을 찾습니다. 기본 Argo 설치 명령을 사용한 경우 Pod는 argo
네임스페이스에 있습니다.
$ kubectl get po -n argo
NAME READY STATUS RESTARTS AGE
argo-server-6bb488c6c8-ff88g 1/1 Running 0 40m
workflow-controller-57db6b46f-7qfr9 1/1 Running 0 40m
$ kubectl logs workflow-controller-57db6b46f-7qfr9 -n argo
... lots of stuff here ...
도움을 요청
이러한 방법으로 문제가 해결되지 않으면 ask a question on StackOverflow , start a discussion on GitHub 또는 ask in the Argo Slack .
이것들은 내가 사용하는 도구 중 일부일 뿐입니다. 제가 놓치고 있는 부분이 있다면 댓글 부탁드립니다!
Reference
이 문제에 관하여(Argo 워크플로를 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/crenshaw_dev/how-to-debug-an-argo-workflow-31ng
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ argo get workflow-template-dag-diamond
Name: workflow-template-dag-diamond
Namespace: default
ServiceAccount: default
Status: Succeeded
Conditions:
Completed True
Created: Mon Mar 01 08:51:26 -0500 (7 minutes ago)
Started: Mon Mar 01 08:51:26 -0500 (7 minutes ago)
Finished: Mon Mar 01 08:51:36 -0500 (7 minutes ago)
Duration: 10 seconds
Progress: 1/1
ResourcesDuration: 5s*(1 cpu),5s*(100Mi memory)
STEP TEMPLATE PODNAME DURATION MESSAGE
✔ workflow-template-dag-diamond diamond
└─✔ A workflow-template-whalesay-template/whalesay-template workflow-template-dag-diamond-2997968480 6s
때로는
argo get
의 MESSAGE
열에 잘 맞지 않는 전체 워크플로 문제가 있습니다.kubectl describe workflow
이벤트 목록을 포함하여 워크플로에 대한 더 많은 세부 정보를 인쇄합니다. 이벤트에는 종종 무엇이 잘못되었는지에 대한 세부 정보가 포함됩니다.$ kubectl describe workflow workflow-template-dag-diamond
Name: workflow-template-dag-diamond
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal WorkflowRunning 8m42s workflow-controller Workflow Running
Normal WorkflowNodeSucceeded 8m32s workflow-controller Succeeded node workflow-template-dag-diamond.A
Normal WorkflowNodeSucceeded 8m32s workflow-controller Succeeded node workflow-template-dag-diamond
Normal WorkflowSucceeded 8m32s workflow-controller Workflow completed
kubectl을 사용하여 Pod 설명
Pod가 실패하면 단서가 될 수 있는 여러 장소가 있습니다. 하나는 Pod와 관련된 이벤트입니다.
파드 이름은 예측할 수 없으므로(종종 -93750129
와 같은 임의의 접미사를 가짐) argo get
를 사용하여 의심되는 파드의 이름을 가져옵니다.
그런 다음 kubectl describe po
를 사용하여 이벤트를 포함한 파드 세부 정보를 확인합니다.
$ kubectl describe po workflow-template-dag-diamond-2997968480
Name: workflow-template-dag-diamond-2997968480
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 36s default-scheduler Successfully assigned default/workflow-template-dag-diamond-2997968480 to docker-desktop
Normal Pulled 35s kubelet Container image "argoproj/argoexec:v2.12.9" already present on machine
Normal Created 35s kubelet Created container wait
Normal Started 35s kubelet Started container wait
Warning Failed 31s kubelet Failed to pull image "docker/whalesay": rpc error: code = Unknown desc = Error response from daemon: Head https://registry-1.docker.io/v2/docker/whalesay/manifests/latest: x509: certificate is valid for auth.docker.io, not registry-1.docker.io
Normal Pulling 17s (x2 over 35s) kubelet Pulling image "docker/whalesay"
Warning Failed 16s (x2 over 31s) kubelet Error: ErrImagePull
Warning Failed 16s kubelet Failed to pull image "docker/whalesay": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate is valid for auth.docker.io, not registry-1.docker.io
Normal BackOff 5s (x2 over 30s) kubelet Back-off pulling image "docker/whalesay"
Warning Failed 5s (x2 over 30s) kubelet Error: ImagePullBackOff
프록시 문제로 인해 Docker Hub에서 가져오기가 방지되어 이 워크플로가 실패했습니다.
실패가 단계의 컨테이너 중 하나 내부에 있기 때문에 때때로 문제가 이벤트에 표시되지 않습니다.
kubectl을 사용하여 파드 로그 읽기
Argo Workflows의 일부로 실행되는 Pod에는 wait
, main
, 때로는 init
의 두 개 또는 세 개의 컨테이너가 있습니다.
wait
사이드카는 main
컨테이너(귀하의 코드)를 주시하고 Argo Workflow 컨트롤러(또 다른 Pod)와 단계 진행 상황에 대해 통신하기 위해 Argo에 의해 주입됩니다.
main
컨테이너는 yaml에서 워크플로를 정의할 때 설정한 컨테이너입니다. (image
, command
, args
, source
항목을 찾아 이 Pod 구성의 일부를 확인하십시오.)
init
컨테이너(있는 경우)도 Argo에 의해 주입됩니다. 아티팩트를 Pod로 가져오는 것과 같은 작업을 수행합니다.
로그를 읽으려면 kubectl logs
를 사용하십시오. 예를 들어:
$ kubectl logs workflow-template-dag-diamond-2997968480 init
error: container init is not valid for pod workflow-template-dag-diamond-2997968480
C02D507EMD6P:test_workflows ekmed$ kubectl logs workflow-template-dag-diamond-2997968480 wait
time="2021-03-01T14:09:18.339Z" level=info msg="Starting Workflow Executor" version=v2.12.9
time="2021-03-01T14:09:18.346Z" level=info msg="Creating a docker executor"
time="2021-03-01T14:09:18.346Z" level=info msg="Executor (version: v2.12.9, build_date: 2021-02-16T22:51:48Z) initialized (pod: default/workflow-template-dag-diamond-2997968480) with template:\n{\"name\":\"whalesay-template\",\"arguments\":{},\"inputs\":{\"parameters\":[{\"name\":\"message\",\"value\":\"A\"}]},\"outputs\":{},\"metadata\":{},\"container\":{\"name\":\"\",\"image\":\"docker/whalesay\",\"command\":[\"cowsay\"],\"resources\":{}}}"
time="2021-03-01T14:09:18.346Z" level=info msg="Waiting on main container"
time="2021-03-01T14:14:17.998Z" level=info msg="Alloc=4699 TotalAlloc=14633 Sys=70080 NumGC=6 Goroutines=7"
init
및 wait
의 로그는 Argo에서 가져오기 때문에 읽기가 약간 어려울 수 있습니다. main
에 대한 로그는 구성된 image
에서 가져오므로 아마도 더 익숙할 것입니다.
kubectl을 사용하여 워크플로 컨트롤러 로그 읽기
Argo는 모든 단계를 실행하는 프로세스를 통해 워크플로를 안내하는 "워크플로 컨트롤러"라는 포드와 함께 제공됩니다.
다른 모든 디버깅 기술이 실패하면 워크플로 컨트롤러 로그에 유용한 정보가 포함될 수 있습니다.
먼저 Pod 이름을 찾습니다. 기본 Argo 설치 명령을 사용한 경우 Pod는 argo
네임스페이스에 있습니다.
$ kubectl get po -n argo
NAME READY STATUS RESTARTS AGE
argo-server-6bb488c6c8-ff88g 1/1 Running 0 40m
workflow-controller-57db6b46f-7qfr9 1/1 Running 0 40m
$ kubectl logs workflow-controller-57db6b46f-7qfr9 -n argo
... lots of stuff here ...
도움을 요청
이러한 방법으로 문제가 해결되지 않으면 ask a question on StackOverflow , start a discussion on GitHub 또는 ask in the Argo Slack .
이것들은 내가 사용하는 도구 중 일부일 뿐입니다. 제가 놓치고 있는 부분이 있다면 댓글 부탁드립니다!
Reference
이 문제에 관하여(Argo 워크플로를 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/crenshaw_dev/how-to-debug-an-argo-workflow-31ng
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ kubectl describe po workflow-template-dag-diamond-2997968480
Name: workflow-template-dag-diamond-2997968480
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 36s default-scheduler Successfully assigned default/workflow-template-dag-diamond-2997968480 to docker-desktop
Normal Pulled 35s kubelet Container image "argoproj/argoexec:v2.12.9" already present on machine
Normal Created 35s kubelet Created container wait
Normal Started 35s kubelet Started container wait
Warning Failed 31s kubelet Failed to pull image "docker/whalesay": rpc error: code = Unknown desc = Error response from daemon: Head https://registry-1.docker.io/v2/docker/whalesay/manifests/latest: x509: certificate is valid for auth.docker.io, not registry-1.docker.io
Normal Pulling 17s (x2 over 35s) kubelet Pulling image "docker/whalesay"
Warning Failed 16s (x2 over 31s) kubelet Error: ErrImagePull
Warning Failed 16s kubelet Failed to pull image "docker/whalesay": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate is valid for auth.docker.io, not registry-1.docker.io
Normal BackOff 5s (x2 over 30s) kubelet Back-off pulling image "docker/whalesay"
Warning Failed 5s (x2 over 30s) kubelet Error: ImagePullBackOff
Argo Workflows의 일부로 실행되는 Pod에는
wait
, main
, 때로는 init
의 두 개 또는 세 개의 컨테이너가 있습니다.wait
사이드카는 main
컨테이너(귀하의 코드)를 주시하고 Argo Workflow 컨트롤러(또 다른 Pod)와 단계 진행 상황에 대해 통신하기 위해 Argo에 의해 주입됩니다.main
컨테이너는 yaml에서 워크플로를 정의할 때 설정한 컨테이너입니다. (image
, command
, args
, source
항목을 찾아 이 Pod 구성의 일부를 확인하십시오.)init
컨테이너(있는 경우)도 Argo에 의해 주입됩니다. 아티팩트를 Pod로 가져오는 것과 같은 작업을 수행합니다.로그를 읽으려면
kubectl logs
를 사용하십시오. 예를 들어:$ kubectl logs workflow-template-dag-diamond-2997968480 init
error: container init is not valid for pod workflow-template-dag-diamond-2997968480
C02D507EMD6P:test_workflows ekmed$ kubectl logs workflow-template-dag-diamond-2997968480 wait
time="2021-03-01T14:09:18.339Z" level=info msg="Starting Workflow Executor" version=v2.12.9
time="2021-03-01T14:09:18.346Z" level=info msg="Creating a docker executor"
time="2021-03-01T14:09:18.346Z" level=info msg="Executor (version: v2.12.9, build_date: 2021-02-16T22:51:48Z) initialized (pod: default/workflow-template-dag-diamond-2997968480) with template:\n{\"name\":\"whalesay-template\",\"arguments\":{},\"inputs\":{\"parameters\":[{\"name\":\"message\",\"value\":\"A\"}]},\"outputs\":{},\"metadata\":{},\"container\":{\"name\":\"\",\"image\":\"docker/whalesay\",\"command\":[\"cowsay\"],\"resources\":{}}}"
time="2021-03-01T14:09:18.346Z" level=info msg="Waiting on main container"
time="2021-03-01T14:14:17.998Z" level=info msg="Alloc=4699 TotalAlloc=14633 Sys=70080 NumGC=6 Goroutines=7"
init
및 wait
의 로그는 Argo에서 가져오기 때문에 읽기가 약간 어려울 수 있습니다. main
에 대한 로그는 구성된 image
에서 가져오므로 아마도 더 익숙할 것입니다.kubectl을 사용하여 워크플로 컨트롤러 로그 읽기
Argo는 모든 단계를 실행하는 프로세스를 통해 워크플로를 안내하는 "워크플로 컨트롤러"라는 포드와 함께 제공됩니다.
다른 모든 디버깅 기술이 실패하면 워크플로 컨트롤러 로그에 유용한 정보가 포함될 수 있습니다.
먼저 Pod 이름을 찾습니다. 기본 Argo 설치 명령을 사용한 경우 Pod는 argo
네임스페이스에 있습니다.
$ kubectl get po -n argo
NAME READY STATUS RESTARTS AGE
argo-server-6bb488c6c8-ff88g 1/1 Running 0 40m
workflow-controller-57db6b46f-7qfr9 1/1 Running 0 40m
$ kubectl logs workflow-controller-57db6b46f-7qfr9 -n argo
... lots of stuff here ...
도움을 요청
이러한 방법으로 문제가 해결되지 않으면 ask a question on StackOverflow , start a discussion on GitHub 또는 ask in the Argo Slack .
이것들은 내가 사용하는 도구 중 일부일 뿐입니다. 제가 놓치고 있는 부분이 있다면 댓글 부탁드립니다!
Reference
이 문제에 관하여(Argo 워크플로를 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/crenshaw_dev/how-to-debug-an-argo-workflow-31ng
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ kubectl get po -n argo
NAME READY STATUS RESTARTS AGE
argo-server-6bb488c6c8-ff88g 1/1 Running 0 40m
workflow-controller-57db6b46f-7qfr9 1/1 Running 0 40m
$ kubectl logs workflow-controller-57db6b46f-7qfr9 -n argo
... lots of stuff here ...
이러한 방법으로 문제가 해결되지 않으면 ask a question on StackOverflow , start a discussion on GitHub 또는 ask in the Argo Slack .
이것들은 내가 사용하는 도구 중 일부일 뿐입니다. 제가 놓치고 있는 부분이 있다면 댓글 부탁드립니다!
Reference
이 문제에 관하여(Argo 워크플로를 디버깅하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/crenshaw_dev/how-to-debug-an-argo-workflow-31ng텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)