登录
首页 >  Golang >  Go问答

操作指南:使用 client-go 在 k8s 中删除 Job 和其相关的 pod

来源:stackoverflow

时间:2024-03-24 23:57:32 488浏览 收藏

在 Kubernetes 中使用 client-go 删除 Job 时,如果未设置适当的删除策略,其相关的 Pod 可能不会被自动删除。本文提供了一个指南,说明如何通过设置 `DeleteOptions` 中的 `propagationPolicy` 字段为 `background`,使用 client-go 正确删除 Job 及其 Pod。

问题内容

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

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

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

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

如何仅通过 client-go 删除带有 pod 的作业?


解决方案


您需要将deleteoptions中的propagationpolicy字段设置为background。这可确保删除作业及其子 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, 
       })

理论要掌握,实操不能落!以上关于《操作指南:使用 client-go 在 k8s 中删除 Job 和其相关的 pod》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>