gpt4 book ai didi

kubernetes - 如何使用每个节点运行一个Pod并使用所有可用资源的Pod在Kubernetes(GKE)上自动缩放?

转载 作者:行者123 更新时间:2023-12-02 12:15:15 26 4
gpt4 key购买 nike

我认为我有一个非常简单的方案:我需要在Google Kubernetes Engine上自动缩放,并具有一个Pod,该Pod在每个节点上运行一个,并使用该节点上所有可用的剩余资源。

“剩余”资源意味着在每个节点上运行着某些基本Pod服务,例如日志记录和度量标准,需要它们请求的资源。但是剩下的一切都应该放在这个特定的pod上,实际上这是我集群的主要Web服务。

同样,当容器的容器启动时,这些剩余资源应该可用,而不是通过容器自动重新启动进行垂直自动缩放。原因是该容器具有某些限制,这些限制使重新启动非常昂贵:繁重的磁盘缓存以及我使用的某些第三方软件的许可问题。因此,尽管容器/ pods 当然可以重新启动,但除滚动更新外,我还是要避免。

当CPU使用率过高(例如70%)时,群集应扩展节点。我并不是说请求节点的Pod的CPU利用率,而是实际利用率,这主要取决于Web服务的负载。

我应该如何为这种情况配置群集?我已经看到了集群自动缩放,垂直容器自动缩放和水平容器自动缩放。尽管似乎DaemonSet并不是为需要扩展的Pod设计的,但是还有Deployment vs DaemonSet。因此,我认为部署可能是必要的,但是以某种方式限制每个节点一个Web服务Pod(pod反相关性?)。

如何将所有这些放在一起?

最佳答案

您可以使用等于单个节点可分配资源(即总资源减去您提到的辅助服务)的资源请求来设置部署。然后配置“水平Pod自动扩展”,以在CPU请求利用率超过70%时扩展部署。这应该可以解决问题,因为在这种情况下,请求利用率基本上与总节点资源利用率相同,对吗?但是,如果您确实希望基于实际的节点CPU利用率进行扩展,则始终使用scaling by external metrics

从技术上讲,部署的资源请求不必完全等于剩余资源;而是使请求足够大以防止两个Pod在同一节点上运行就足够了。只要是这种情况,并且没有资源限制,则pod最终会消耗所有可用的节点资源。

最后,在您的GKE节点池上配置集群自动伸缩,我们应该一切顺利。垂直Pod自动缩放在这里并没有真正发挥作用,因为Pod资源请求保持不变,并且DaemonSet不适用,因为如上所述它们无法通过HPA进行扩展。

关于kubernetes - 如何使用每个节点运行一个Pod并使用所有可用资源的Pod在Kubernetes(GKE)上自动缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57562707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com