GKE环境中Argo Workflow执行docker ps无法获取容器ID致wait容器死循环
问题根因
当前GKE正式版本已默认使用Containerd作为节点容器运行时,不再预装Docker运行时。你执行的docker ps相关命令仅能查询Docker runtime创建的容器,无法获取Containerd创建的K8s业务容器数据。
Argo Workflow低版本默认使用Docker executor,依赖docker CLI查询容器状态,获取不到主容器ID时就会导致wait容器陷入无限等待,阻塞工作流推进。
可行解决方案
- 方案一(推荐):将Argo Workflow升级至v3.1.0及以上版本,该版本已默认兼容Containerd运行时,内置的CRI executor无需依赖Docker CLI即可查询容器状态。
- 方案二(适配低版本):修改Argo Workflow控制器配置,将容器运行时执行器切换为适配CRI的类型:
- 执行命令编辑控制器配置:
kubectl edit configmap workflow-controller-configmap -n <你的Argo安装命名空间> - 在
data段添加如下配置:
containerRuntimeExecutor: kubelet- 重启workflow-controller pod后配置即可生效。
- 执行命令编辑控制器配置:
- 方案三(仅适配Docker runtime集群):如果你的GKE集群明确使用Docker作为运行时,需要确认Argo executor pod已挂载节点的
/var/run/docker.sock套接字,且有对应读写权限。
内容的提问来源于stack exchange,提问作者user13865394
相关产品推荐
相关产品推荐

