调试暂停¶
v3.3 及更高版本
简介¶
debug pause功能允许在单个工作流步骤执行前、执行后或前后暂停以进行调试,然后从暂停状态释放这些步骤。目前该功能仅在配合使用Emissary Executor时支持。
为了暂停容器,需要使用环境变量:
ARGO_DEBUG_PAUSE_AFTER- 在执行后暂停步骤ARGO_DEBUG_PAUSE_BEFORE- 在执行前暂停步骤
示例工作流:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: pause-after-
spec:
entrypoint: argosay
templates:
- name: argosay
container:
image: argoproj/argosay:v2
env:
- name: ARGO_DEBUG_PAUSE_AFTER
value: 'true'
为了将步骤从暂停状态释放,会使用名为/var/run/argo/ctr/main/after或/var/run/argo/ctr/main/before的标记文件,这些文件对应步骤被暂停的时机。当使用容器中没有可用shell时,暂停步骤功能可以与ephemeral containers结合使用。
示例¶
1) 创建一个设置了调试暂停环境的工作流,在本示例中 ARGO_DEBUG_PAUSE_AFTER 将被设置,因此该步骤将在用户代码执行后暂停。
pause-after.yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: pause-after-
spec:
entrypoint: argosay
templates:
- name: argosay
container:
image: argoproj/argosay:v2
env:
- name: ARGO_DEBUG_PAUSE_AFTER
value: 'true'
argo submit -n argo --watch pause-after.yaml
在目标容器中创建一个shell,或在pod中创建一个临时容器,本示例中使用了临时容器。
kubectl debug -n argo -it POD_NAME --image=busybox --target=main --share-processes
为了能够访问工作流步骤使用的持久化卷,必须使用--share-processes参数。
临时容器可用于执行调试操作。调试完成后,创建标记文件以允许工作流步骤继续执行。当使用进程命名空间共享时,容器文件系统可通过/proc/$pid/root链接对Pod中的其他容器可见。
touch /proc/1/root/var/run/argo/ctr/main/after