首页 > 解决方案 > 在 Kubernetes 中推出后,是否可以在本地更快地终止容器

问题描述

当我在本地时,使用 minikube 时,我每次重建我的应用程序时都会检查它,并使用以下命令将其推出:

kubectl rollout restart deployment/api-local -n influx

容器持续 30 秒被终止。我对生产问题没有任何问题,但是在本地开发中,我最终会浪费很多时间等待,因为我可能会重建我的应用程序 100 次(= 每天损失 50 分钟)。

有什么技巧可以缩短这个终止时间吗?我知道这不是 k8s 最佳实践的一部分,但这对我来说很有意义。

标签: kubernetesrollout

解决方案


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

推荐阅读