我正在使用Operator SDK构建自定义 Kubernetes Operator。我使用相应的 Operator SDK 命令创建了自定义资源定义和控制器:operator-sdk add api --api-version example.com/v1alpha1 --kind=Exampleoperator-sdk add controller --api-version example.com/v1alpha1 --kind=Example在主协调循环中(对于上面的示例,自动生成的ReconcileExample.Reconcile方法),我有一些自定义业务逻辑,需要我在 Kubernetes API 中查询具有特定字段值的同类其他对象。我突然想到,我也许可以使用默认的 API 客户端(由控制器提供)和自定义字段选择器:func (r *ReconcileExample) Reconcile(request reconcile.Request) (reconcile.Result, error) { ctx := context.TODO() listOptions := client.ListOptions{ FieldSelector: fields.SelectorFromSet(fields.Set{"spec.someField": "someValue"}), Namespace: request.Namespace, } otherExamples := v1alpha1.ExampleList{} if err := r.client.List(ctx, &listOptions, &otherExamples); err != nil { return reconcile.Result{}, err } // do stuff... return reconcile.Result{}, nil}当我运行该运算符并创建新Example资源时,该运算符失败并显示以下错误消息:{"level":"info","ts":1563388786.825384,"logger":"controller_example","msg":"Reconciling Example","Request.Namespace":"default","Request.Name":"example-test"}{"level":"error","ts":1563388786.8255732,"logger":"kubebuilder.controller","msg":"Reconciler error","controller":"example-controller","request":"default/example-test","error":"Index with name field:spec.someField does not exist","stacktrace":"..."}最重要的部分是名称字段索引:spec.someField 不存在我已经搜索了关于默认 API 客户端的 Operator SDK 文档,并了解了一些有关客户端内部工作原理的信息,但没有详细解释此错误或如何修复它。此错误消息是什么意思,如何创建此缺失索引以按此字段值有效列出对象?
目前暂无任何回答
- 0 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消