所以我很难理解 Kubernetes 中 init-container 的一些细节。
在 kubernetes 文档中,我们正在阅读以下内容 - https://kubernetes.io/docs/concepts/workloads/pods/init-containers/:
所有特定资源请求或限制中定义的最高值 初始化容器是有效的初始化请求/限制。如果有资源的话 没有指定资源限制,这被认为是最高的 限制。 Pod 对资源的有效请求/限制较高 的:
- 所有应用程序容器对资源的请求/限制的总和
- 资源的有效初始化请求/限制
调度是基于有效的请求/限制来完成的,这意味着 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)?