我只是使用控制器运行时客户端程序包列出了我的CR拥有的StatefulSet,如下代码:
fieldSelector := fields.Set{"ownerReferences.name": crObject.ObjectMeta.Name, "ownerReferences.uid": string(crObject.ObjectMeta.UID)}.AsSelector()
fieldSelector.String()
allStatefulSets := &v1beta1.StatefulSetList{}
err := r.client.List(
ctx,
&client.ListOptions{
Namespace: exStatefulSet.Namespace,
LabelSelector: labels.Everything(),
FieldSelector: fieldSelector,
},
allStatefulSets)
它返回了空列表。因此,我不得不使用metav1.IsControlledBy
函数(从metav1“ k8s.io/apimachinery/pkg/apis/meta/v1”导入)来过滤同一命名空间下的所有StatefulSet。才行。
我担心这个额外循环的成本。我们能找到一个更好的解决方案,而不是从API服务器获取所有StatefulSet吗?