- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有很多服务。一天中,少数服务忙了大约十个小时,而其他大部分服务都处于空闲状态或使用少量cpu。
以前我把所有的服务都放在一个有两个cpu的虚拟机里,按cpu的使用情况进行缩放,最忙的时候有两个虚拟机,但大多数时候只有一个。
服务
实例
一天中的忙碌时间
忙碌时的CPU(核心/服务)
空闲时的CPU(核心/服务)
繁忙的服务
2
8~12小时
0.5~1
0.1~0.5
繁忙的服务
2
8~12小时
0.3~0.8
0.1~0.3
非事件服务
30
0~1小时
0.1~0.3
< 0.1
现在我想把它们放到kubernetes中,每个节点有两个CPU,并使用节点自动伸缩和HPA,为了使节点自动伸缩,我必须为所有服务设置请求CPU,这正是我遇到的困难。
这是我的设置。
服务
实例
忙碌的时间
请求 CPU(CPU/服务)
总请求 cpu
繁忙的服务
2
8~12小时
300米
600米
繁忙的服务
2
8~12小时
300米
600米
非事件服务
30
0~1小时
100米
3000米
注意:inactive service requests CPU设置为100m,因为忙的时候小于100m就不好用了。
有了这个设置,节点的数量总是会大于三个,成本太高了。我认为问题在于,虽然这些服务需要100m的CPU才能正常工作,但它们大多处于空闲状态。
我真的希望所有的服务都可以自动伸缩,我认为这是 kubernetes 的好处,它可以帮助我更灵活地分配 pod。我的想法错了吗?我不应该为非事件服务设置请求 CPU 吗?
即使我忽略不事件的服务。我发现 kubernetes 经常有两个以上的节点。如果我有更多的活跃服务,即使在非高峰时段,请求 CPU 也会超过 2000m。有什么解决办法吗?
最佳答案
I put all services in a virtual machine with two cpus, and scale by cpu usage, there are two virtual machine at the busiest time, but most of the time there is only one.
The inactive service requests cpu is set to 100m because it will not work well if it is less than 100m when it is busy.
I think the problem is that although these services require 100m of cpu to work properly, they are mostly idle.
20m
甚至
5m
?但是由于这些服务在繁忙时期会需要更多的资源,所以设置一个更高的限制,以便容器可以“爆裂”并使用
Horizontal Pod Autoscaler对于这些。使用 Horizontal Pod Autoscaler 时,将创建更多副本,并且流量将在所有副本之间进行负载平衡。另见
Managing Resources for Containers .
I really hope that all services can autoscaling, I think this is the benefit of kubernetes, which can help me assign pods more flexibly. Is my idea wrong?
Shouldn't I set a request cpu for an inactive service?
If I have more active services, even in off-peak hours, the requests cpu will exceed 2000m. Is there any solution?
I find that kubernetes more often has more than two nodes.
Deployment
的副本数也是如此。 ,如果可用性很重要,请至少使用两个副本。当你例如
drain a node对于维护或节点升级,pod 将被驱逐 - 但不会首先在不同的节点上创建。控制平面将检测到
Deployment
(技术上是 ReplicaSet)的副本数量少于所需数量并创建一个新的 pod。但是当在新节点上创建新的 Pod 时,容器镜像会在 Pod 运行之前先被拉取。为避免在这些事件期间停机,请至少为您的
Deployment
使用两个副本。和
Pod Topology Spread Constraints确保这两个副本在不同的节点上运行。
关于kubernetes - 如何在 Kubernetes 中对大量非事件 Pod 有效地使用 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66873881/
我是一名优秀的程序员,十分优秀!