我为rbac定义添加了这样的注释。
Annotations: expires-at: 2020-07-24T19:24:42Z
我只想根据这个注释过滤已经过期的Kubernetes资源。我在下面试过了。。但它不起作用"lt"正在考虑将以下内容作为文件名。
kubectl get rbacdefinition --field-selector metadata.annotations.expires-at<$(date -u '+%Y-%m-%dT%H:%M:%SZ')
请让我知道如何解决这个问题。
将此答案发布为社区wiki,以提高可见性,因为好的答案已发布在评论中。
正如@tarun khosla
所提到的,当您使用选择器运算符时,仅支持=
、==
和!=
。因此,像<
、>
、=<
这样的运算符将不起作用。它在Kubernetes文档中有描述
@mchawre
提供的另一个优点是使用第三方软件Kube Janitor。
作为工作组,您可以考虑使用:
kubectl describe <resource> | grep expires-at: > expiration.txt
或
kubectl describe all -n <namespace> | grep expires-at: -A 5 > expiration.txt
然而,根据资源和注释的数量,您可能会获得许多不相关的信息。
我看到的答案是不存在,<, >, REGEXP(), and IN()
,基本上是你在数据库中所期望的,不存在。你问得对,因为我找到的文件是:
https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/
没有明确说明这一点。
Takeaway规则:NEVER像使用数据库一样使用kubernetes资源,否则将处理这样的问题。除了=
和!=
之外,>
和<
是最直观的比较器,但它们并不存在。