首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用Operator SDK对对象进行垃圾回收?

如何正确使用Operator SDK对对象进行垃圾回收?
EN

Stack Overflow用户
提问于 2021-04-24 06:15:46
回答 1查看 46关注 0票数 0

Kubernetes Operators的Operator-SDK有一个ctrl.SetControllerReference()函数,该函数声称它可以在删除管理自定义资源时自动垃圾收集对象。

有时它似乎不会删除任何东西。我做错什么了?

EN

回答 1

Stack Overflow用户

发布于 2021-04-24 06:15:46

ctrl.SetControllerReference()仅更改本地对象上的metadata.ownerReferences

它不会自动为您调用reconciler.Update()。因此,这些更改从未持久化,Owner也从未更改。

创建对象的正确方法是在调用reconciler.Create()之前调用ctrl.SetControllerReference(),例如

代码语言:javascript
复制
if err := ctrl.SetControllerReference(mycrd, secret, r.Scheme); err != nil {
    log.Error(err, "Failed to set controller reference")
    return err
}

log.Info("Creating a new Secret", "Secret.Namespace", secret.Namespace, "Secret.Name", secret.Name)
if err = r.Create(ctx, secret); err != nil {
    log.Error(err, "Failed to create new Secret", "Secret.Namespace", secret.Namespace, "Secret.Name", secret.Name)
    return err
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67237417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档