首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么控制器-运行时在更新存在的资源时说资源“找不到”?

为什么控制器-运行时在更新存在的资源时说资源“找不到”?
EN

Stack Overflow用户
提问于 2021-12-27 22:56:47
回答 2查看 272关注 0票数 1

我用kubebuilder编写了一个k8s控制器,它协调了我的CustomResource对象(MyResource)。

在更新期间,即使我的资源存在于集群中,控制器运行时也会给出一个“找不到”错误。

代码语言:javascript
复制
func (r *MyResourceReconciler) updateStatus(ctx context.Context, myResource *myResourcev1.MyResource, neoStatus *myResourcev1.MyResourceStatus) error {
    if !reflect.DeepEqual(&myResource.Status, neoStatus) {
        myResource.Status = *neoStatus
        err := r.Status().Update(ctx, myResource)
        return err

    }
    return nil
}

有人能帮我排除这个错误吗?我卡住了,因为我可以使用集群上的kubectl来获取资源&但是控制器-运行时说“找不到”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-27 23:55:36

我自己解决了这个问题:

r.Update(ctx, myResource)而不是r.Status().Update(ctx, myResource)

票数 2
EN

Stack Overflow用户

发布于 2022-05-25 01:11:09

我有完全相同的问题,而另一种类型的完美运作。最后我找到了根本原因。

您需要将此标记置于结构之上,以启用状态子资源。

代码语言:javascript
复制
//+kubebuilder:subresource:status

https://book-v1.book.kubebuilder.io/basics/status_subresource.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70501227

复制
相关文章

相似问题

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