如果init容器资源设置为BestEffort,但普通容器资源设置为实际值(可突发)会发生什么?

问题描述 投票:0回答:0

所以我很难理解 Kubernetes 中 init-container 的一些细节。

在 kubernetes 文档中,我们正在阅读以下内容 - https://kubernetes.io/docs/concepts/workloads/pods/init-containers/:

所有特定资源请求或限制中定义的最高值 初始化容器是有效的初始化请求/限制。如果有资源的话 没有指定资源限制,这被认为是最高的 限制。 Pod 对资源的有效请求/限制较高 的:

  1. 所有应用程序容器对资源的请求/限制的总和
  2. 资源的有效初始化请求/限制

调度是基于有效的请求/限制来完成的,这意味着 init 容器可以为初始化保留未初始化的资源 在 Pod 的生命周期内使用。 QoS(服务质量)层 Pod 的有效 QoS 层是 init 容器的 QoS 层, 应用程序容器类似

假设我们有以下定义的值。这些只是为了说明一个例子:

resources:
  initContainer1:
    resources:
      requests:
        memory: "0"
        cpu: "0"
      limits:
        memory: "0"
        cpu: "0"
  initContainer2:
    resources:
      requests:
        memory: "10Mi"
        cpu: "5m"
      limits:
        memory: "20Mi"
        cpu: "50m"
  mainContainer:
    resources:
      requests:
        memory: "256Mi"
        cpu: "100m"
      limits:
        memory: "512Mi"
        cpu: "200m"   

那么这意味着,有效的初始化请求/限制变为

resources:
  requests:
    memory: "0"
    cpu: "0"
  limits:
    memory: "0"
    cpu: "0"

因此,根据 Kubernetes 文档中有关 init 容器的文本,在这种情况下,pod 的有效请求/限制也成为最佳努力值。如果我对这部分的理解有误或者我的理解是否正确,请随时纠正我。

然而,当我部署并描述 pod 时,我发现即使 init-container 资源设置为 BestEffort“0”,主容器仍然会在这里分配设置值。

但我猜测在 Kubernetes 中为 Init 容器设置 Best Effort 的问题在于,您将不知道 pod 实际使用了多少资源(CPU+MEM)?

kubernetes memory cloud cpu-usage
© www.soinside.com 2019 - 2024. All rights reserved.