让我们假设kubernetes集群具有一个工作节点(1core和256MB RAM)。所有Pod都将安排在工作节点中。
首先,我使用config部署了一个pod(请求:cpu 0.4,限制:cpu 0.8),它成功部署了。由于该计算机有1个内核可用,因此占用了0.8 cpu
我可以部署具有相同配置的另一个Pod吗?如果是,第一个Pod的cpu会降低到0.4吗?
答案 0 :(得分:2)
在两个不同的位置考虑资源请求和限制。
仅在安排广告连播时才考虑请求。如果您要调度两个Pod,每个Pod在一个拥有1.0 CPU的节点上要求0.4 CPU,那么它们可以容纳并且都可以在那进行调度(以及其他Pod总共要多请求0.2 CPU)。
限制节流CPU利用率,但也受节点实际物理限制的约束。如果一个Pod尝试使用1.0 CPU,但其Pod规格将其限制为0.8 CPU,它将受到限制。如果其中两个Pod在仅一个实际CPU的同一个假设节点上运行,则它们将受内核调度策略的约束,实际上,每个Pod可能会获得约0.5 CPU。
(内存遵循相同的基本模型,不同之处在于,如果pod超出了其限制,或者如果节点上使用的总组合内存超过了可用内存,则pod将被杀死OOM。如果您的节点具有256 MB RAM,并且每个Pod的内存请求为96 MB,限制为192 MB,它们都可以调度[192 MB请求的内存容量],但是如果一个人单独分配了超过192 MB的RAM [其自身的限制]或总数该节点上所有Kubernetes和非Kubernetes进程使用的内存都超过了物理内存限制。)
答案 1 :(得分:0)
允许分数要求。保证
spec.containers[].resources.requests.cpu
为0.5的容器的CPU数量是请求1个CPU的容器的一半。表达式0.1等效于表达式100m,可以将其理解为“一百毫厘”。有人说“一百亿”,这被理解为是同一回事。 API会将带有小数点的请求(例如0.1)转换为100m,并且不允许精度小于1m。因此,最好使用100m格式。 始终要求CPU是绝对数量,而不是相对数量。单核,双核或48核计算机上的CPU数量等于0.1。
来自here
在您的情况下,您可以在节点上运行2个Pod。