如何通过 client-go 删除 k8s Job 及其 pod?

Eri*_*han 7 go kubernetes client-go

我尝试通过client-go使用 LabelSelector 删除我的作业:

cli.BatchV1().Jobs("default").Delete(context.TODO(), name, metav1.DeleteOptions{})
Run Code Online (Sandbox Code Playgroud)

作业已成功删除,但其 pod 却没有删除!

如果我通过 删除这个作业kubectl,它创建的 pod 也会被自动删除。

我如何简单地删除带有 pod 的作业client-go

小智 1

您需要将该PropagationPolicy字段设置DeleteOptionsBackground。这可确保删除 Job 及其子 Pod。

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

//...

backgroundDeletion := metav1.DeletePropagationBackground

err := cli.BatchV1()
       .Jobs("default")
       .Delete(context.TODO(), name, metav1.DeleteOptions{
           PropagationPolicy: &backgroundDeletion, 
       })
Run Code Online (Sandbox Code Playgroud)