kubernetes - 当 pod 中的代码在 hpa 缩减时运行时会发生什么?
问题描述
我正在学习k8s hpa autoscale,有一个困惑。</p>
如果在 pod 中运行一些代码,如下所示:
# do something1
time.sleep(15)
# do something2
当执行到time.sleep(15),此时hpa scale down,这个pod会被移除,something2不会执行吗?</p>
解决方案
关于如何控制服务出现故障时应该发生的事情,有几个选项。通常,K8S 会向soft termination
容器的主进程发送一个,该进程可以使用它来优雅地处理(拦截中断信号)。虽然,K8S 只会等待 PodSpec 中terminationGracePeriod
定义的时间。
您还可以使用生命周期钩子调用preStop
并在外部处理服务终止过程。
此 StackOverflow 答案中提供了一些信息:只有在 Kubernetes 中使用 HorizontalPodAutoscaler 处理消息(pod 完成其任务)时,是否有办法缩小 pod?
阅读关于服务管理和 pod 生命周期的 pod 终止过程的 Kubernetes 文档。 https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
要回答您的问题,这将取决于terminationGracePeriod
是否something2
会执行。
推荐阅读
- android - 如何删除所有活动的地理围栏?
- typescript - 打字稿中字符串键索引器的更好类型安全性
- node.js - 如何在 pug/Jade 中将单选按钮值传递到浏览器
- c# - 用户无法插入数据网格?
- raspberry-pi - 可以将压力传感器连接到树莓派吗?
- javascript - “最终分布式编程”和“函数式编程”有什么区别
- python - 如何将我的 PyGame 游戏拆分为单独的文件?
- sql - 在 oracle 中集成一棵树
- kubernetes - 部署已准备就绪,但 nginx-ingress 仍然需要重新加载并导致 503 持续几秒钟
- linux - 如何在 Linux 内核中禁用内存归零