我可以使用kubectl cli删除部署,但是有没有办法使部署完成后自动销毁呢?就我而言,我们正在AWS EKS的Docker容器中启动一个长期运行的过程。当我检查状态时,它是“正在运行”,然后过一会儿状态是“已完成”。那么,有什么方法可以使kubernetes pod在完成后自动销毁吗?
kubectl run some_deployment_name --image=path_to_image
kubectl get pods
//the above command returns...
some_deployment_name1212-75bfdbb99b-vt622 0/1 Running 2 23s
//and then some time later...
some_deployment_name1212-75bfdbb99b-vt622 0/1 Completed 2 15m
完成后,我希望将其销毁,而不必调用另一个命令。
答案 0 :(得分:3)
所以问题是关于运行Jobs,而不是像Kubernetes Deployments抽象那样运行部署,而抽象创建了ReplicaSet,但更像Kubernetes Jobs
指定Job
选项时,将使用kubectl run
创建一个--restart=OnFailure
。除非您使用kubectl delete <pod-name>
手动将其删除,否则群集不会清除这些作业。更多信息here。
如果您使用的是Kubernetes 1.12或更高版本,则会引入新的Job规范:ttlSecondsAfterFinished
。您也可以使用它来清理您的工作。另一个耗时的选择是编写自己的Kubernetes控制器,以清理常规的Jobs。
如果同时指定CronJob
和`--schedule =“”选项,则会创建--restart=OnFailure
。这些吊舱会定期运行,因此会自动删除。
有关kubectl run
here的更多信息。