我有很多服务。一天中,少数服务忙了十个小时左右,而其他大部分服务都处于空闲状态或使用少量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,为了使节点自动伸缩,我必须为所有服务设置requests CPU,这正是我遇到的困难。
这是我的设置。
服务 | 实例 | 忙碌的时间 | 请求 cpu (cpu/服务) |
总请求 CPU |
---|---|---|---|---|
繁忙的服务 | 2 | 8~12小时 | 300m | 600m |
繁忙的服务 | 2 | 8~12小时 | 300m | 600m |
非活动服务 | 30 | 0~1小时 | 100m | 3000米 |
注意:不活动的服务请求CPU设置为100m,因为忙的时候小于100m就不好用了。
使用此设置,节点的数量将始终大于三个,这太昂贵了。我认为问题在于,虽然这些服务需要 100m 的 CPU 才能正常工作,但它们大多处于空闲状态。
我真的希望所有的服务都可以自动伸缩,我认为这是 Kubernetes 的好处,它可以帮助我更灵活地分配 Pod。我的想法错了吗?我不应该为非活动服务设置请求 CPU 吗?
即使我忽略不活动的服务。我发现 kubernetes 更多时候有两个以上的节点。如果我有更多的活动服务,即使在非高峰时间,请求 CPU 也会超过 2000m。有什么解决办法吗?