我对K8S有问题,我有大约30个微服务(java运行在spring上)。Microservices只需要大量的CPU来启动,因为这里有很多库。当我同时部署所有微服务时,它将在K8S节点上产生非常大的CPU负载,并且它们被标记为不可用。我需要以某种方式限制同时启动豆荚的数量,以避免节点上的cpu负载过高。有什么办法能做到吗?
发布于 2022-06-01 15:00:37
您可以设置CPU 限制和要求。
一旦设置了这些限制,即使限制很大,kubelet和容器运行时也一起工作,以强制执行CPU限制。同时,您还可以使用库伯奈特斯本身的储备资源,这样工作负载就不会使整个节点处于危险之中。
一旦定义了这些限制,Linux内核将负责强制执行这些限制,并确保公平地分配可用资源。如果集群中有DaemonSets,请确保它们也有资源和限制。您可以考虑以有保证的方式运行DaemonSets,这样他们的资源就会被围起来。见配置Pods的服务质量。
综合考虑,这些措施应该保护您的节点不受工作负载的影响,同时仍然允许app在启动时进入可用的CPU。
如果您发现仍然存在问题,您可以采取另一个步骤:将每个启动延迟一个随机的数量。通过在主应用程序启动之前运行自定义init容器,您可以在不改变应用程序的情况下做到这一点。这种随机延迟有助于避免在每个JVM以相同的资源访问模式同时运行的情况下出现的大量问题。
https://serverfault.com/questions/1101832
复制相似问题