我用kubebuilder编写了一个k8s控制器,它协调了我的CustomResource对象(MyResource)。
在更新期间,即使我的资源存在于集群中,控制器运行时也会给出一个“找不到”错误。
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来获取资源&但是控制器-运行时说“找不到”。
发布于 2021-12-27 23:55:36
我自己解决了这个问题:
r.Update(ctx, myResource)而不是r.Status().Update(ctx, myResource)
发布于 2022-05-25 01:11:09
我有完全相同的问题,而另一种类型的完美运作。最后我找到了根本原因。
您需要将此标记置于结构之上,以启用状态子资源。
//+kubebuilder:subresource:statushttps://book-v1.book.kubebuilder.io/basics/status_subresource.html
https://stackoverflow.com/questions/70501227
复制相似问题