argo workflow 设置自动GC pod
文章目录
在 Argo Workflows 中,自动垃圾回收(GC)Pod 是指在工作流完成后自动删除与工作流相关的 Pod,从而节省资源。Argo Workflows 支持通过设置
podGC
选项来实现这一功能。
你可以在 Argo Workflow 的配置中启用 Pod 垃圾回收,确保在工作流执行完成后,相关的 Pod 会被自动删除。以下是如何配置 Argo Workflow 自动进行 Pod GC 的步骤。
1. 配置 Argo Workflow 自动 GC Pod
你需要在 workflow-controller
的 ConfigMap
中进行配置。通过修改 workflow-controller
的 ConfigMap
,你可以启用 Pod 的自动垃圾回收。
在 Argo Workflow 中,Pod GC 配置通常包括以下几个字段:
strategy
: 垃圾回收策略。deleteDelayDuration
: 删除 Pod 的延迟时间(例如,删除 Pod 前等待多少时间)。limit
: 最大保留的 Pod 数量。
主要配置项:
OnWorkflowCompletion
: 当工作流完成时,自动删除工作流相关的 Pod(最常见的策略)。OnPodCompletion
: 当 Pod 完成时,删除 Pod。Never
: 不删除 Pod,保持 Pod。
2. 修改 Workflow Controller ConfigMap
为了启用自动 GC Pod,你需要修改 workflow-controller
的 ConfigMap
来设置 podGC
策略。
步骤:
-
查找 Workflow Controller 的 ConfigMap
你可以通过以下命令查看 Argo Workflow Controller 的
ConfigMap
:kubectl get configmap -n argo workflow-controller-configmap -o yaml
-
修改 ConfigMap 配置
编辑
workflow-controller
的ConfigMap
,增加或修改podGC
配置。例如:apiVersion: v1 kind: ConfigMap metadata: name: workflow-controller-configmap namespace: argo data: workflowDefaults: | spec: podGC: strategy: OnWorkflowCompletion # 在工作流完成时删除 Pod deleteDelayDuration: 5s # 等待 5 秒后删除 Pod
或者如下:
kubectl edit configmap workflow-controller-configmap -n argo
apiVersion: v1
data:
workflowDefaults: "spec:\n podGC:\n strategy: OnWorkflowCompletion\n deleteDelayDuration:
5s\n \n \n"
以上配置表示:当工作流完成时,相关的 Pod 会被自动删除,并且在工作流完成后等待 5 秒再删除 Pod。
-
更新 ConfigMap
如果你手动编辑了 ConfigMap 文件,可以使用
kubectl apply
更新它:kubectl apply -f workflow-controller-configmap.yaml -n argo
-
重启 Workflow Controller Pod
配置更新后,需要重启
workflow-controller
Pod 以使配置生效:kubectl rollout restart deployment workflow-controller -n argo
3. 工作流定义中的 Pod GC 配置
你还可以在 单个工作流 中为 Pod 设置垃圾回收策略,覆盖全局配置。这可以通过在工作流的 spec
中添加 podGC
配置来实现。
示例:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: pod-gc-example-
spec:
entrypoint: main
podGC:
strategy: OnWorkflowCompletion # 设置为 OnWorkflowCompletion,表示工作流完成时删除 Pod
deleteDelayDuration: 5s # 删除 Pod 前等待 5 秒
templates:
- name: main
container:
image: busybox
command: [sh, -c, "sleep 60"]
在上面的工作流配置中,我们使用了 podGC
设置,指示 Argo Workflow 在工作流完成时删除 Pod,并且在 Pod 完成后等待 5 秒再删除。
4. Pod GC 策略详解
在 Argo Workflow 中,podGC
的配置项可以包括以下几种策略:
OnWorkflowCompletion
: 在工作流完成时自动删除 Pod(最常见的选项)。这意味着只有工作流执行完成(无论成功或失败)后,Pod 才会被删除。OnPodCompletion
: 在 Pod 完成时自动删除 Pod。对于每个 Pod,当它完成任务后会被删除。Never
: 永不删除 Pod,Pod 将会保持直到人工干预或其他操作。
5. Pod GC 配置项说明
strategy
: 设置 Pod GC 的策略。可以是OnWorkflowCompletion
,OnPodCompletion
或Never
。deleteDelayDuration
: 设置 Pod 删除的延迟时间。比如设置5s
,表示 Pod 完成后等待 5 秒再删除。这对于避免 Pod 状态的延迟反映(比如日志输出、状态收集)很有用。limit
: 设定最大保留的 Pod 数量。如果创建的 Pod 数量超过该限制,旧的 Pod 将被删除。
6. 验证和测试 Pod GC 配置
你可以通过以下命令来验证你的 Pod GC 配置是否生效:
-
创建一个简单的工作流,执行一个任务并完成。
-
检查工作流的 Pod 是否按照配置被删除。
-
查看工作流和 Pod 的状态:
kubectl get pods -n argo kubectl get workflow -n argo
确保在工作流完成后,Pod 会被删除,或者根据你的延迟时间策略,Pod 删除会有一定延迟。
小结
通过以上步骤,你可以通过修改 Argo Workflow Controller 的 ConfigMap 或者在具体的工作流定义中,配置自动 Pod GC 策略。这样可以确保在工作流完成后,相关的 Pod 会被及时删除,从而释放集群资源。如果你希望有一定的延迟再删除 Pod,可以通过 deleteDelayDuration
配置进行控制。
原文地址:https://blog.csdn.net/qq_37362891/article/details/144016352
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!