作者回复: 非常正确!
作者回复: Metrics 对资源的计算确实有延迟。在生产实践上,你可以借助 KEDA 来实现自己的 HPA 策略,比如从 Prometheus 读取 Metrics 来进行伸缩,或者其他事件来驱动 HPA,这也是一个不错的技术选型。
作者回复: 这个思考很棒。 如果单纯从资源上看,确实AB方案似乎没什么区别。但在实际场景,多实例的稳定性远远比单实例要好。主要两个方面。一是单点故障,二是多实例在高并发场景不容易因为请求堆积导致雪崩。 另外一个方面是 HPA 还可以在流量波谷的时候减小副本数,提高资源利用率。
作者回复: Load 过高是 CPU 内存吗?还是磁盘 I/O?如果是 CPU 和内存,增加节点就好。如果是 I/O 跟不上,把节点的磁盘换成 SSD 高性能磁盘。
作者回复: 这个增强社区呼声很高,据我所知目前还无法实现,你可以关注这个提案:https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/1287-in-place-update-pod-resources。 好消息是,这个提案目前已经有 PR 了,但还没有被合并:https://github.com/kubernetes/kubernetes/pull/102884,相信不久后会合并并发布。 最后,部分云厂商的托管 K8s 提供原地资源配额修改的能力,比如腾讯云:https://cloud.tencent.com/document/product/457/79697。
作者回复: K8s 会自动缩容。
作者回复: Pod 的总平均使用率,也就是所有 Pod 的实际使用量与请求 request 资源比例的平均值。
作者回复: K8s 在驱逐 Pod 的时候会先给 Pod 排序,不同场景下排序的算法有差异。 比如在节点内存资源不足的场景下,是会参考优先级来驱逐 Pod 的。
作者回复: 是的,在 Node 节点宕机的情况下,节点所有 Pod 都会被驱逐并在新的节点重建。
作者回复: 哈哈,谢谢,继续加油~