我需要删除群集上存在超过14天的部署。如果我运行:
oc get deploy --sort-by=.metadata.creationTimestamp | grep wml-os-rt-hybrid | awk '{ print $1 "\t\t" $6;}'它为我提供了这些部署的列表和它们的历史:
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的部署,在这种情况下,它将只是一个部署,但在其他集群中,它将是数百个。目前,我手动删除它,查看列表,并通过运行(以上述为例)删除任何超过14天的内容:
oc delete deployment wml-os-rt-hybrid0.1-gz3vczfc这是我试图找到一个关于如何自动化的答案的部分
发布于 2020-07-18 02:49:00
要列出超过14天的所有条目,请尝试:
oc get deploy --sort-by=.metadata.creationTimestamp | awk '/wml-os-rt-hybrid/ && $6+0>14 { print $1 "\t\t" $6;}'要删除这些部署,请执行以下操作:
oc get deploy --sort-by=.metadata.creationTimestamp | awk '/wml-os-rt-hybrid/ && $6+0>14 { system("oc delete deployment "$1);}'在这里,/wml-os-rt-hybrid/ && $6+0>14选择(a)包含wml-os-rt-hybrid并且(b)具有大于14的第六个字段的所有行。然后,我们可以像第一个命令一样打印,也可以像第二个命令一样运行系统命令。
我们在将$6与14进行比较之前将0添加到它。我们这样做是因为它告诉awk将$6视为一个数字,以便比较是数值而不是词法的。
注意,awk命令消除了对grep进程的需要。这使得生成的命令更高效(创建的进程减少了一个),也更简洁。
https://stackoverflow.com/questions/62959823
复制相似问题