5

我可以使用 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

完成后,我希望将其销毁,而无需调用另一个命令。

4

1 回答 1

4

所以问题是关于运行 Jobs 而不是像 Kubernetes Deployments抽象中那样创建ReplicaSet但更像 Kubernetes Jobs的部署

AJobkubectl run在您指定--restart=OnFailure选项时创建的。除非您使用 手动删除这些作业,否则集群不会清理这些作业kubectl delete <pod-name>。更多信息在这里

如果您使用的是 Kubernetes 1.12 或更高版本,则引入了新的作业规范:ttlSecondsAfterFinished. 你也可以用它来清理你的工作。另一个更耗时的选择是编写自己的 Kubernetes 控制器来清理常规作业。

如果CronJob同时指定--restart=OnFailure和 `--schedule="" 选项,则会创建 A。这些 pod 会自动删除,因为它们会定期运行。

更多信息在kubectl run 这里

于 2018-10-05T17:47:47.393 回答