当容器配置了CPU请求并没有限制时,它尝试使用比请求更多的CPU,而节点被充分利用时,我试图了解会发生什么,但是还有另一个具有可用资源的节点。
k8s会保持容器在其当前节点中的节流,还是会被移动到具有可用资源的另一个节点?我们知道当容器在这种情况下节流时,k8s是如何/何时决定移动它的吗?
我希望有任何额外的资源来阅读这个问题,因为我找不到任何关于这个特定场景的细节。
发布于 2022-09-19 20:55:51
Q1)当容器配置为CPU请求而没有限制时会发生什么?
ANS:
如果不指定CPU限制,则为。
如果没有为容器指定CPU限制,那么其中一种情况适用于:
容器在它可以使用的CPU资源上没有上限。容器可以使用它正在运行的节点上的所有可用CPU资源。
容器在具有默认CPU限制的命名空间中运行,容器被自动分配为默认限制。群集管理员可以使用LimitRange为CPU限制指定默认值。
如果指定CPU限制,但不指定CPU请求,则为。
如果为容器指定CPU限制,但不指定CPU请求,Kubernetes将自动分配与该限制相匹配的CPU请求。类似地,如果容器指定了自己的内存限制,但没有指定内存请求,Kubernetes将自动分配与该限制匹配的内存请求。
( Q2)当节点被充分利用时,它尝试使用比请求更多的CPU,但是还有另一个具有可用资源的节点?。
ANS:
Kubernetes调度程序是一个将Pods分配给节点的控制平面进程。调度器根据约束和可用资源确定调度队列中的每个Pod的哪些节点是有效位置。然后调度器对每个有效节点进行排序,并将Pod绑定到合适的节点。可以在集群中使用多个不同的调度器;kube-调度器是参考实现。有关调度和kube-调度程序组件的更多信息,请参见调度。
调度、抢占和驱逐
在库伯奈特,调度是指确保Pods与节点匹配,以便kubelet能够运行它们。抢占是指终止优先级较低的Pods,从而使优先级较高的Pods能够在节点上调度的过程。驱逐是在节点上终止一个或多个Pods的过程。
Q3( k8s )是将容器保持在其当前节点中的节流,还是将其移动到具有可用资源的另一个节点?
ANS:
Pod断裂
豆荚破坏是指节点上的Pods被自愿或非自愿地终止的过程。
自动中断是由应用程序所有者或群集管理员故意启动的。非自愿中断是无意的,可能由不可避免的问题引发,如节点耗尽资源,或意外删除。
除非有人(一个人或一个控制器)销毁它们,或者有不可避免的硬件或系统软件错误,否则自愿或非自愿中断口袋妖怪不会消失。
我们把这些不可避免的情况称为非自愿中断申请。
的例子有:
建议:
污点和容忍一起工作,以确保豆荚不会被安排到不合适的节点上。一个或多个污染应用于一个节点;这表明该节点不应该接受任何不容忍这些污染的荚。
命令:
kubectl taint nodes node1 key1=value1:NoSchedulekubectl taint nodes node1 key1=node.kubernetes.io/disk-pressure:NoSchedulehttps://stackoverflow.com/questions/73778501
复制相似问题