自学内容网 自学内容网

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-controllerConfigMap 中进行配置。通过修改 workflow-controllerConfigMap,你可以启用 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-controllerConfigMap 来设置 podGC 策略。

步骤:
  1. 查找 Workflow Controller 的 ConfigMap

    你可以通过以下命令查看 Argo Workflow Controller 的 ConfigMap

    kubectl get configmap -n argo workflow-controller-configmap -o yaml
    
  2. 修改 ConfigMap 配置

    编辑 workflow-controllerConfigMap,增加或修改 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。

  1. 更新 ConfigMap

    如果你手动编辑了 ConfigMap 文件,可以使用 kubectl apply 更新它:

    kubectl apply -f workflow-controller-configmap.yaml -n argo
    
  2. 重启 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 的策略。可以是 OnWorkflowCompletionOnPodCompletionNever
  • deleteDelayDuration: 设置 Pod 删除的延迟时间。比如设置 5s,表示 Pod 完成后等待 5 秒再删除。这对于避免 Pod 状态的延迟反映(比如日志输出、状态收集)很有用。
  • limit: 设定最大保留的 Pod 数量。如果创建的 Pod 数量超过该限制,旧的 Pod 将被删除。

6. 验证和测试 Pod GC 配置

你可以通过以下命令来验证你的 Pod GC 配置是否生效:

  1. 创建一个简单的工作流,执行一个任务并完成。

  2. 检查工作流的 Pod 是否按照配置被删除。

  3. 查看工作流和 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)!