如何在Kubernetes注释中检查小于条件



我为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资源,否则将处理这样的问题。除了=!=之外,><是最直观的比较器,但它们并不存在。

最新更新