kubernetes - 在 Kubernetes 中推出后,是否可以在本地更快地终止容器
问题描述
当我在本地时,使用 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
推荐阅读
- java - 有没有办法使用maven插件将jar解压到我的项目文件夹并将它们作为java文件获取
- python - 提取标签 STRONG 中的文本
- powershell - 我怎样才能摆脱这个未经授权的访问异常?
- python - 检查 Pandas 列中的字符串切片字符是否包含另一个字符串
- python-3.x - 删除 Django 表单中的帮助文本
- c# - 刚体.MovePosition(rb.position + offset) 使下落缓慢
- flutter - FloatingActionButton 上的背景颜色
- python - RDS Aurora Mysql 和 ECS 连接超时 (pymysql.err.OperationalError) (2003, "Can't connect to MySQL)
- python-3.x - CFFI:是否有可能捕获警告?
- javascript - Javascript ES6 语法单选按钮检查