我想发出一个命令,可以清除所有旧的部署。例如,我在名称空间中有部署。
kubectl -n web get部署--排序-by=.metadata.creationTimeSTAMP
myproject-static-staging-master 1/1 1 1 54d
myproject-static-staging-task-13373 1/1 1 1 20d
myproject-static-staging-task-13274 1/1 1 1 19d
myproject-static-staging-task-13230 1/1 1 1 19d
myproject-static-staging-task-13323 1/1 1 1 19d
myproject-static-staging-task-13264 1/1 1 1 18d
myproject-static-staging-task-13319 1/1 1 1 13d
myproject-static-staging-task-13470 1/1 1 1 6d20h
myproject-static-staging-task-13179 1/1 1 1 6d20h
myproject-static-staging-task-13453 1/1 1 1 6d4h
myproject-static-staging-moving-to-old 1/1 1 1 6d
myproject-static-staging-moving-test 1/1 1 1 5d20h我只想保存它(5最新的)
myproject-static-staging-task-13470 1/1 1 1 6d20h
myproject-static-staging-task-13179 1/1 1 1 6d20h
myproject-static-staging-task-13453 1/1 1 1 6d4h
myproject-static-staging-moving-to-old 1/1 1 1 6d
myproject-static-staging-moving-test 1/1 1 1 5d20h我试过那个命令
kubectl获得部署-n web --模板'{{range .items}{.metadata.name}{{“n”}{end}‘-排序-by=.metadata.creationTimeSTAMP\ grep -v主+ grep myproject-静态-暂存头-n 5\ xargs -r kubectl -n web删除部署
但这是不对的。
发布于 2022-11-01 05:50:58
您可以像这样使用xargs命令:
command1 | xargs -I{} command2 {}Xargs将用空{}替换来自command1的输出。例如,如果command1的输出为‘1-2’,那么Xargs将调用命令:'command2 1‘、'command2 2’和'command2 3‘。
所以在你的情况下,你可以用
kubectl get deployment -n web --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' --sort-by=.metadata.creationTimestamp | grep -v master | grep myproject-static-staging | tail -r | tail -n +6 | xargs -I{} kubectl -n web delete deployment {}‘-r’将反转顺序,‘-n +6’将选择除前5个以外的所有行。
https://stackoverflow.com/questions/74262260
复制相似问题