当我在本地时,使用 minikube 时,我每次重建我的应用程序时都会检查它,并使用以下命令将其推出:
kubectl rollout restart deployment/api-local -n influx
容器持续 30 秒被终止。我对生产问题没有任何问题,但是在本地开发中,我最终会浪费很多时间等待,因为我可能会重建我的应用程序 100 次(= 每天损失 50 分钟)。
有什么技巧可以缩短这个终止时间吗?我知道这不是 k8s 最佳实践的一部分,但这对我来说很有意义。
当我在本地时,使用 minikube 时,我每次重建我的应用程序时都会检查它,并使用以下命令将其推出:
kubectl rollout restart deployment/api-local -n influx
容器持续 30 秒被终止。我对生产问题没有任何问题,但是在本地开发中,我最终会浪费很多时间等待,因为我可能会重建我的应用程序 100 次(= 每天损失 50 分钟)。
有什么技巧可以缩短这个终止时间吗?我知道这不是 k8s 最佳实践的一部分,但这对我来说很有意义。
terminationGracePeriodSeconds
在部署/pod 配置中设置。根据参考文档,它是:
... pod 需要优雅终止的可选持续时间(以秒为单位)。可以在删除请求中减少。值必须是非负整数。零值表示立即删除。如果此值为 nil,则将使用默认宽限期。宽限期是 Pod 中运行的进程收到终止信号后的持续时间(以秒为单位),以及进程被终止信号强制停止的时间。将此值设置为比您的进程的预期清理时间更长。默认为 30 秒。
例子:
spec:
replicas: 1
selector:
...
template:
spec:
terminationGracePeriodSeconds: 0
containers:
...
另外,从这里:
kubectl delete 命令支持 --grace-period= 选项,该选项允许用户覆盖默认值并指定自己的值。值 0 force 删除 Pod。您必须指定一个附加标志 --force 以及 --grace-period=0 才能执行强制删除。
示例(如果需要,请指定命名空间):
kubectl delete pod <pod-name> --now
...或者
kubectl delete pod <pod-name> --grace-period=0 --force