首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建一个"Best-effort“pod,它的oom得分不是1000而是-999

创建一个"Best-effort" pod,它的oom得分不是1000而是-999。

首先,让我们解释一下这个问题中涉及到的一些概念和术语。

  1. Pod:在Kubernetes中,Pod是最小的可部署单元,它是一个或多个容器的组合。Pod中的容器共享相同的网络命名空间和存储卷,它们可以共享资源和相互通信。
  2. OOM(Out of Memory)得分:OOM得分是Kubernetes中用于评估Pod内存使用情况的指标。它是根据Pod内存使用量和Pod请求的内存资源之间的比率计算得出的。较高的得分表示Pod使用的内存资源越接近其请求的内存资源。

现在,我们来解答这个问题。

创建一个"Best-effort" pod,它的oom得分不是1000而是-999。首先,需要了解"Best-effort" pod是指没有为其指定资源请求的Pod。这意味着它将使用集群中的任何可用资源,但没有保证。

在Kubernetes中,Pod的资源请求可以通过在Pod的配置文件中指定资源字段来定义。例如,可以使用以下配置文件创建一个"Best-effort" pod:

代码语言:yaml
复制
apiVersion: v1
kind: Pod
metadata:
  name: best-effort-pod
spec:
  containers:
  - name: my-container
    image: my-image
    resources: {}

在上面的配置文件中,resources字段为空,这意味着Pod没有指定任何资源请求。因此,它将被视为"Best-effort" pod。

接下来,我们来解释一下oom得分的概念。oom得分是根据Pod内存使用量和Pod请求的内存资源之间的比率计算得出的。较高的得分表示Pod使用的内存资源越接近其请求的内存资源。

在这个问题中,oom得分不是1000而是-999。这意味着Pod的内存使用量远远低于其请求的内存资源。负数的oom得分表示Pod的内存使用量远远低于其请求的内存资源。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云容器服务(Tencent Kubernetes Engine,TKE):腾讯云提供的托管式Kubernetes服务,可帮助您轻松部署、管理和扩展容器化应用程序。了解更多信息,请访问:腾讯云容器服务(TKE)
  • 腾讯云云服务器(CVM):腾讯云提供的可扩展的云服务器实例,可用于部署和运行各种应用程序。了解更多信息,请访问:腾讯云云服务器(CVM)

请注意,以上提到的腾讯云产品仅作为示例,您可以根据自己的需求选择适合的云计算产品和服务提供商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • cgroup oom引发Pod重建问题分析

    image.png 为什么CGROUP OOM,剩余进程oom_score_adj都配置为-998情况下,系统杀不是占用内存最多java进程而是选择杀pause进程呢?...从下面也可以看出adj值越小,进程得分越少,也就越难被杀掉,oom_score_adj取值为[-1000,1000] static void mem_cgroup_out_of_memory(struct...时输出信息score值 points = chosen_points * 1000 / totalpages; //kill掉得分最高进程,参数chosen...由于pause是创建pod时第一个创建进程,所以kernel在遍历pod对应cgroup及子cgroup时会先找到pause进程,所以当容器内剩余进程算出来score值都是相等时,pause进程就会...2-999之间 那么我们再看看如果采用Burstable模式是什么结果: 由于采用Burstable模式,oom_score_adj是一个范围在2~999浮动值,所以这里采用最小值2来计算(oom_score_adj

    3.2K60

    如何部署一个生产级别的 Kubernetes 应用

    我们知道 Wordpress 应用本身会频繁和 MySQL 数据库进行交互,这种情况下如果将二者用容器部署在同一个 Pod 下面是不是要高效很多,因为一个 Pod 下面的所有容器是共享同一个 network...一般来说需要用 StatefulSet 来进行管理,但是我们这里部署 MySQL 并不是集群模式,而是单副本,所以用 Deployment 也是没有问题,当然如果要真正用于生产环境还是需要集群模式...设置 QoS 级别,当资源不足时会优先 kill 掉优先级低 Pod,在实际使用过程中,通过 OOM 分数值来实现,OOM 分数值范围为 0-1000OOM 分数值根据 OOM_ADJ参数计算得出。...对于 Guaranteed 级别的 PodOOM_ADJ 参数设置成了-998,对于 Best-Effort 级别的 PodOOM_ADJ 参数设置成了1000,对于 Burstable 级别的 Pod...,OOM_ADJ 参数取值从 2 到 999

    1.1K20

    Kubernetes Eviction Manager工作机制分析

    研究过Kubernetes Resource QoS同学,肯定会有一个疑问:QoS中会通过Pod QoS和OOM Killer进行资源回收,当发生资源紧缺时候。...以回收资源,而不是通过Linux OOM Killer这样本身耗资源组件进行回收。...指的是,当Eviction Signal中值达到Soft Eviction Thresholds配置值时,并不会马上触发Kubelet去Evict Pods,而是会等待一个用户配置grace period...) / machineMemoryCapacityBytes), 999) oom_killer根据container使用内存占Node总内存百分比计算得到该containeroom_score...,然后再将该oom_sore和前面对应oom_score_adj相加作为最终oom_score,Node上所有containers最终oom_score进行排名,将oom_score得分最高container

    1.9K81

    【K8s】Kubernetes 稳定性之资源限制及服务质量等级

    如果您有其他想要了解,欢迎私信联系我~ 资源限制 1、基本介绍 Kubernetes 是一个完全以资源为中心系统,资源限制是通过 Cgroups 等控制 Pod 使用节点资源(CPU、内存、存储)一种机制...如果节点上资源不足以满足 Pod 请求,调度器将不会将 Pod 调度到该节点 资源分配:一旦 Pod 被调度到节点,Kubernetes 会根据资源请求为 Pod 分配资源。...如果是 CPU 使用超过限制,CPU 会被压缩导致应用程序运行变缓,如果是内存使用超过限制,容器会直接被 OOM Kill 资源配额:通过设置资源配额,Kubernetes 可以限制命名空间内可以创建资源数量和消耗资源总量...服务质量等级分为以下三种: Guaranteed:Limits 和 Requests 值相同,等级最高 Burstable:Limits 和 Requests 值不同 Best-Effort:Limits...Burstable 甚至 Best-Effort 级别

    12210

    047.集群管理-资源及配额管理

    Kubernetes计算资源单位是大小写敏感,因为m可以表示千分之一单位(milliunit),而M可以表示十进制1000,二者含义不同;同理,小写k不是一个合法资源单位。...调整值为1000-10×(%of memory requested);如果内存Requests为0,那么OOM_SCORE_ADJ调整值固定为999。...这样规则能确保OOM_SCORE_ADJ调整值范围为2~999,而BurstablePod中所有进程OOM最终分数范围为2~1000。...如果一个BurstablePod使用内存比它内存Requests少,那么可以肯定所有进程OOM最终分数会小于1000,此时能确保优先级高于BestEffortPod。...如果在一个BurstablePod某个容器中某个进程使用内存比容器Requests值高,那么这个进程OOM最终分数会是1000,否则OOM最终分会小于1000

    1.5K30

    Kubernetes 触发 OOMKilled(内存杀手)如何排除故障

    第二种即为今天和小伙伴分享, K8s 行为,Pod 配置了资源限制,超过了资源限制,由Cgroups 触发 OOMKillde 宿主节点行为 对于第一种我们简单看一个 Demo,创建一个没有限制资源...里安装一个内存分配工具bigmem,用于模拟pod中容器进程内存不回收情况。...此选择过程基于多个因素,包括进程内存使用情况、优先级以及运行时间量。 一旦 OOMKiller 选择要终止进程,它就会向该进程发送信号,要求正常终止。...有三个 QoS 类可以分配给一个 pod,每个类都有一个匹配值:oom_score_adj Guaranteed(完全可靠): -997 BestEffort(): 1000 Burstable()...: min(max(2, 1000 — (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999) 当前 QoS 级别 直接由 Requests

    1K20

    048.集群管理-资源限制实践

    2.4 配置默认Requests和Limits 在命名空间已经配置了限定计算资源资源配额情况下,如果尝试在该命名空间下创建一个不指定Requests和LimitsPod,由于Pod中没有指定CPU...为了避免这种失败,可以使用LimitRange来为这个命名空间下所有Pod都提供一个资源配置默认值。...三 指定作用域 3.1 作用域场景 假设并不想为某个命名空间配置默认计算资源配额,而是希望限定在命名空间内运行QoS为BestEffortPod总数,例如让集群中部分资源运行QoS为非BestEffort...解读:名为best-effort-nginxDeployment因为没有配置Requests和Limits,所以QoS级别为BestEffort,因此创建过程由best-effort资源配额项来限制...资源配额项限制,而best-effort资源配额项不会对进行限制。

    36210

    Kubernetes 触发 OOMKilled(内存杀手)如何排除故障 | 技术创作特训营第一期

    第二种即为今天和小伙伴分享, K8s 行为,Pod 配置了资源限制,超过了资源限制,由Cgroups 触发 OOMKillde 宿主节点行为 对于第一种我们简单看一个 Demo,创建一个没有限制资源...里安装一个内存分配工具bigmem,用于模拟pod中容器进程内存不回收情况。...此选择过程基于多个因素,包括进程内存使用情况、优先级以及运行时间量。 一旦 OOMKiller 选择要终止进程,它就会向该进程发送信号,要求正常终止。...有三个 QoS 类可以分配给一个 pod,每个类都有一个匹配值:oom_score_adj Guaranteed(完全可靠): -997 BestEffort: 1000 Burstable: min...(max(2, 1000 — (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999) 当前 QoS 级别 直接由 Requests

    2.8K50

    10-Kubernetes进阶之原理架构学习及操作配置

    Job Controller 不会删除 Deployment Controller 创建 Pod,因为控制器可以通过标签信息区分哪些 Pod创建。...Job Controller 自己并不执行任何 Pod 或容器,而是发消息给 API Server,由其他控制组件配合 API Server,以执行创建或删除 Pod 实际动作。...上面的方式在实际使用过程中是通过OOM分数值来实现 OOM 分数值从 0-1000 区间范围之内, 其分值是根据OOM_ADJ参数计算得出; Guranteed 级别的PodOOM_ADJ参数设置为...BestEffort可以被Kill时将被Kill; BestEffort 级别的PodOOM_ADJ参数设置为1000, 当系统全部内存被用完时将会被Kill; Tips :对于K8s保留资源比如Kubelet...、docker其OOM_ADJ参数设置为-999 (表示永远不会被Kill) Tips : 对于OOM_ADJ参数来说如果其越大则计算出OOM分数越高,则表明该Pod优先级就越低当出现资源竞争时就会被越早

    1.2K10

    8.深入k8s:资源控制Qos和eviction及其源码分析

    如果kubelet在节点经历系统 OOM 之前无法回收内存,那么oom_killer将基于它在节点上 使用内存百分比算出一个oom_score,然后结束得分最高容器。...下面这里是QOS OOM打分机制,通过给不同pod打分来判断,哪些pod可以被优先kill掉,分数越高越容易被kill。...,则打分就越高 oomScoreAdjust := 1000 - (1000*memoryRequest)/memoryCapacity //这里是为了保证burstable能有个更高 OOM...进行打分,静态Pod、镜像Pod和高优先级Pod,QOS直接被设置成为guaranteed; 然后调用qosGetPodQOS方法获取一个pod评分,但是如果一个pod是burstable,那么需要根据其直接使用内存来进行评分...然后kubelet再Run方法开始工作时候,创建一个goroutine,每5s执行一次updateRuntimeUp。

    1.1K10

    容器进程调度时是该优先考虑CPU资源还是内存资源?

    不知道你有没有遭遇过线上进程被 oom kill 掉场景。这种情况下就是当机器物理内存不是很充足时候,如果申请内存过大,操作系统就可能会挑选在运行一些进程将其杀掉。...这里稍微展开说一下,操作系统选择要杀掉进程也不一定是内存消耗最多服务。而是会综合内存消耗和进程 oom_score_adj(可配置) 值来进行选择。...先不考虑在离线混部情况,假设都是在线服务,那么无论哪一个服务进程被 Linux 给 oom kill掉影响都是非常大。还得重新调度,而且还有可能影响服务稳定性,以及接口正确返回。...在实际中,k8s API Server接受客户端提交Pod对象创建请求后操作过程中,有一个重要步骤就是由调度器程序kube-scheduler从当前集群中选择一个可用最佳节点来接收并运行。...当然实际中 k8s 调度策略不是这么简单,系统默认 kube-scheduler 调度器外还有直接指定Node主机名、节点亲和性、Pod亲和性、nodeSelector 等等调度策略。

    87910
    领券