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

wljmcqd8  于 2023-04-03  发布在  Go
关注(0)|答案(1)|浏览(194)

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

cli.BatchV1().Jobs("default").Delete(context.TODO(), name, metav1.DeleteOptions{})

作业删除成功,但其Pod没有删除!
如果我通过kubectl删除此作业,它创建的pod将自动删除。
我如何通过client-go简单地删除其Pod中的作业?

zbsbpyhn

zbsbpyhn1#

您需要将DeleteOptions中的PropagationPolicy字段设置为Background。这样可以确保删除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, 
       })

相关问题