Kubernetes中QoS稳定吊舱的资源分配

Kubernetes中QoS稳定吊舱的资源分配,kubernetes,Kubernetes,如果限制资源大于请求资源,K8将pod分配给 示例配置: apiVersion: v1 kind: Pod metadata: name: test-metadata namespace: demo spec: containers: - name: test1 image: nginx resources: limits: memory: "14Gi" requests: memory:

如果
限制
资源大于
请求
资源,K8将pod分配给

示例配置:

apiVersion: v1
kind: Pod
metadata:
  name: test-metadata
  namespace: demo
spec:
  containers:
  - name: test1
    image: nginx
    resources:
      limits:
        memory: "14Gi"
      requests:
        memory: "4Gi"
  • Kubernetes是否总是将此pod分配给具有14GB内存的实例
  • Kubernetes是否会始终为该pod保留14 GB内存?如果是,那么它与
    QoS保证类有何不同

我不想使用有QoS保证的
,因为工作负载可能会有所不同。

默认情况下,Kubernetes在尝试调度POD时只考虑资源请求。这意味着您的pod将只被调度到某个节点,该节点至少有pod请求的那么多可用资源

更准确地说,pod将被调度到其中一个节点,这样所有pod(包括它试图调度的pod)请求的资源总和不会超过节点可分配的资源。这里的关键词是可分配资源


可分配资源是指那些可用资源超过操作系统吊舱所需资源的资源。为系统进程保留多少硬件资源是Kubernetes的可配置属性,在默认情况下,Kubernetes在尝试调度POD时只考虑资源请求。这意味着您的pod将只被调度到某个节点,该节点至少有pod请求的那么多可用资源

更准确地说,pod将被调度到其中一个节点,这样所有pod(包括它试图调度的pod)请求的资源总和不会超过节点可分配的资源。这里的关键词是可分配资源


可分配资源是指那些可用资源超过操作系统吊舱所需资源的资源。为系统进程保留多少硬件资源是Kubernetes的可配置属性,在调度POD时不考虑内存限制

Kubernetes是否总是在具有14GB内存的实例上分配此pod

默认情况下,此pod将分配给满足4GB内存请求的任何节点

在节点端,当节点资源耗尽时,任何使用超过其请求资源的pod都会被逐出。换句话说,Kubernetes从不保证Pod请求之外的资源可用性

使用超过节点总内存的内存限制将永远无法达到

Kubernetes会一直为这个pod保留14 GB的内存吗?如果是,那么它与QoS保证类有何不同

不,默认情况下,kubernetes将保留所需的最小内存量,即4GB作为请求

调度器还考虑到以下因素:

调度器配置允许通过编写配置文件并将其路径作为命令行参数传递,自定义kube调度器的行为

调度策略可用于分别指定运行到的谓词和优先级


调度POD时不考虑内存限制

Kubernetes是否总是在具有14GB内存的实例上分配此pod

默认情况下,此pod将分配给满足4GB内存请求的任何节点

在节点端,当节点资源耗尽时,任何使用超过其请求资源的pod都会被逐出。换句话说,Kubernetes从不保证Pod请求之外的资源可用性

使用超过节点总内存的内存限制将永远无法达到

Kubernetes会一直为这个pod保留14 GB的内存吗?如果是,那么它与QoS保证类有何不同

不,默认情况下,kubernetes将保留所需的最小内存量,即4GB作为请求

调度器还考虑到以下因素:

调度器配置允许通过编写配置文件并将其路径作为命令行参数传递,自定义kube调度器的行为

调度策略可用于分别指定运行到的谓词和优先级


请求是否可以实际大于限制?我确信API服务器不会接受它。你们使用什么版本的k8s?应用此清单时,服务器应返回类似于
spec.containers[0]的错误。资源。请求:无效值:“14Gi”:必须小于或等于内存限制
@zerkms my bad,反之亦然。@GrigoriyMikhalkin my bad。我编辑了这个问题。@Dev没有必要,不能有oom。那要看情况而定。如果您设置了某个逐出阈值,当达到该阈值时,pod将在抛出OOM之前被逐出,调度程序将尝试将其放置在更合适的节点上。请求是否实际大于限制?我确信API服务器不会接受它。你们使用什么版本的k8s?应用此清单时,服务器应返回类似于
spec.containers[0]的错误。资源。请求:无效值:“14Gi”:必须小于或等于内存限制
@zerkms my bad,反之亦然。@GrigoriyMikhalkin my bad。我编辑了这个问题。@Dev没有必要,不能有oom。那要看情况而定。如果您设置了一些逐出阈值,当达到该阈值时,pod将在抛出OOM之前被逐出,调度器将尝试将其放置在更合适的节点上。是否有更好的方法来分配动态资源?如果您忽略请求,则可以在任何节点上调度pod。在这种情况下,建议至少设置限值。注意,这些是最好的pra