如何删除大于日期的部署?

How to delete deployments of a greater than date?

我需要删除集群上超过 14 天的部署。如果我 运行:

oc get deploy --sort-by=.metadata.creationTimestamp | grep wml-os-rt-hybrid | awk '{ print  "\t\t" ;}'

它给了我这些部署的列表和它们的年龄:

wml-os-rt-hybrid0.1-gz3vczfc        15d
wml-os-rt-hybrid0.1-fj167pbt        8d
wml-os-rt-hybrid0.1-bdzkqi7z        7d
wml-os-rt-hybrid0.1-g4hclw4v        7d
wml-os-rt-hybrid0.1-j6x9tzt6        7d
wml-os-rt-hybrid0.1-qplkkilw        4d
wml-os-rt-hybrid0.1-sadgz9cz        6h

我对此是全新的,无法弄清楚我需要添加什么,以便它也会删除任何早于 14d 的部署,在这种情况下,它只是一个部署,但在其他集群中它会成百上千。目前我手动删除它查看列表并通过 运行ning 删除任何早于 14 天的内容(以上面为例):

oc delete deployment wml-os-rt-hybrid0.1-gz3vczfc

这是我试图找到有关如何自动化的答案的部分

要列出所有超过 14 天的条目,请尝试:

oc get deploy --sort-by=.metadata.creationTimestamp | awk '/wml-os-rt-hybrid/ && +0>14 { print  "\t\t" ;}'

要删除这些部署:

oc get deploy --sort-by=.metadata.creationTimestamp | awk '/wml-os-rt-hybrid/ && +0>14 { system("oc delete deployment ");}'

此处,/wml-os-rt-hybrid/ && +0>14 选择 (a) 包含 wml-os-rt-hybrid 且 (b) 第六字段大于 14 的所有行。然后我们可以像第一个命令一样打印,或者运行 与第二个一样的系统命令。

我们在 </code> 与 14 进行比较之前将其加零。我们这样做是因为它告诉 <code>awk</code> 视为一个数字,以便比较是数字而不是词汇。 </p> <p>请注意,awk 命令消除了对 <code>grep 过程的需要。这使得生成的命令更加高效(创建的进程减少了一个)并且更加简洁。