我有许多正在运行的pod和分配给它们的水平pod自动缩放器,我使用的集群还可以根据当前负载自动添加和删除节点。
但是我们最近让集群因为OOM错误而离线,这导致了服务中断。
有没有办法监控每个节点上的负载,如果使用率达到节点上内存的80%,Kubernetes不应该在该节点上调度更多的pod,而是等待另一个节点上线。
发布于 2020-07-01 07:28:48
挂起的pods是人们应该监控和定义影响调度的资源请求。
调度程序在将pod调度到节点时使用资源请求信息。每个节点都有一定数量的CPU和内存,可以分配给pods。调度pod时,Scheduler将只考虑具有足够未分配资源的节点,以满足pod的资源需求。如果未分配的CPU或内存量小于pod请求的数量,Kubernetes将不会将pod调度到该节点,因为该节点无法提供pod所需的最小数量。新的Pod将保持挂起状态,直到新节点加入集群。
示例:
apiVersion: v1
kind: Pod
metadata:
name: requests-pod
spec:
containers:
- image: busybox
command: ["dd", "if=/dev/zero", "of=/dev/null"]
name: main
resources:
requests:
cpu: 200m
memory: 10Mi如果您没有指定对CPU的请求,则表示您并不关心在容器中运行的进程分配了多少CPU时间。在最坏的情况下,它可能根本得不到任何CPU时间(当CPU上存在其他进程的大量需求时,就会发生这种情况)。尽管这可能适用于低优先级的批处理作业,但它显然不适合处理用户请求的容器。
发布于 2020-07-01 16:17:01
简而言之:添加资源请求,但不添加限制。否则,您将面临节流问题。
https://stackoverflow.com/questions/62667295
复制相似问题