首页 > 其他分享 >k8s容器资源需求与资源限制

k8s容器资源需求与资源限制

时间:2023-05-08 22:46:35浏览次数:38  
标签:需求 容器 限制 Pod k8s CPU 资源

在Kubernetes中,我们可以通过为容器定义资源需求和限制来管理容器的资源使用。

  1. 资源需求(Resource Requests):指容器在调度和运行时需要的最小资源。当定义了资源需求后,Kubernetes会根据该需求进行调度,安排节点资源。如果节点不能满足指定的需求,Pod将不会被调度。资源需求包括:
  • CPU:以CPU单位表示,1个单位CPU相对于1颗虚拟CPU(vCPU),或者等于1000个微核心(millicores,单位m)。
  • Memory:默认以字节为单位表示,也可以使用日常单位K、M、G、T等。
  1. 资源限制(Resource Limits):指容器能够使用的最大资源限制。有两个限制:
  • CPU:因为CPU是可压缩资源,所以容器进程无法超过该限制。
  • Memory:一旦容器使用的内存超过该限制,容器可能会被OOM Killer。

要为容器定义资源需求和限制,可以编辑Pod的YAML文件并为容器指定资源需求和限制。例如:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-resource
spec:
  containers:
  - name: container1
    image: nginx
    resources:
      requests:
        cpu: "0.1"
        memory: "64Mi"
      limits:
        cpu: "0.2"
        memory: "128Mi"

在上面的例子中,容器“container1”定义了CPU请求为0.1和Memory请求为64Mi,以及CPU限制为0.2和Memory限制为128Mi。

另外在Kubernetes中,可以通过对Pod定义服务质量类别(Quality of Service, QoS)来为Pod分配资源。服务质量类别有三种:保证(Guaranteed)、最小化(Burstable)和任意(BestEffort)。

  1. 保证(Guaranteed):该服务质量类别的Pod是一定能获得所需的资源的。意味着Pod的CPU和内存需求被定义且已满足。当使用保证的服务质量类别时,需要为Pod指定CPU和内存资源的需求,并且Pod的资源请求与资源限制应该相等。这可以确保该Pod得到足够多的资源,而不会造成过少或过多的资源调度。

  2. 最小化(Burstable):该服务质量类别的Pod对资源的需求具有一定的灵活性,可以根据可用资源的情况进行调整。这种类型的Pod可以随着时间的推移、负载消失或增加而调整资源的使用情况。当使用最小化的服务质量类别时,需要为Pod指定CPU或内存资源的需求,但是Pod的资源请求可以小于资源限制或者不做限制。

  3. 任意(BestEffort):该服务质量类别的Pod不需要任何保证,不需要任何资源限制或资源需求。Pod会尽可能多地使用可用资源,但资源可能不足时也不会发生错误。这种类型的Pod主要用于测试和开发场景。

标签:需求,容器,限制,Pod,k8s,CPU,资源
From: https://www.cnblogs.com/bad-joker/p/17383381.html

相关文章

  • 全景剖析阿里云容器网络数据链路(三)—— Terway ENIIP
    来源https://help.aliyun.com/practice_detail/602821本系列联合作者容器服务@谢石前言近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的IaaS化到现在的微服务化,客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度,也一直在高速的......
  • 如何灵活运用Linux 进程资源监控和进程限制
    报告Linux进程统计信息你可以使用 mpstat 单独查看每个处理器或者系统整体的活动,可以是每次一个快照或者动态更新。为了使用这个工具,你首先需要安装 sysstat:#yumupdate&&yuminstallsysstat[基于CentOS的系统]#aptitutdeupdate&&aptitudeinst......
  • docker介绍、什么是虚拟化、docker是什么、容器与虚拟机比较、Docker 概念、docker安
    目录1docker介绍1.1什么是虚拟化2.1docker是什么2.2容器与虚拟机比较2.3Docker概念2docker安装1docker介绍1.1什么是虚拟化在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破......
  • k8s容器安全上下文
    k8s在创建和管理Pod时,可以设置一些安全限制。它包括以下几个方面:1.自主访问控制(DAC):每个容器都有一个默认的用户ID,可以通过PodSecurityContext或SecurityContext来修改它。通过限制各个容器使用不同的用户ID或组ID,可以减小容器之间的攻击面。2.Linux功能:将内核管理权限......
  • 虚拟机、容器对比
    一、容器docter1、概要Docker是一个开源的应用容器引擎,基于 Go语言 并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互......
  • 装最多水的容器 - 题解
    1.问题描述  原题的地址见:ContainerWithMostWater-LeetCode.此问题等价于如下问题:    给定所有元素非负的数组[a0,a1,...,an-1],计算(j-i)|aj-ai|(其中j>i)的最小值。 2.暴力解法  有了问题的描述,很容易写出暴力求解的算法:intmaxArea(vector<int>......
  • k8s 节点压力驱逐
    节点压力驱逐节点压力驱逐是 kubelet 主动终止Pod以回收节点上资源的过程。kubelet 监控集群节点的内存、磁盘空间和文件系统的inode等资源。当这些资源中的一个或者多个达到特定的消耗水平,kubelet可以主动地使节点上一个或者多个Pod失效,以回收资源防止饥饿。在节......
  • Springboot 自定义Web容器
    Springboot自定义Web容器如果你的项目并发量比较高,想要修改最大线程数、最大连接数等配置信息,可以通过自定义Web容器的方式,代码如下所示。@SpringBootApplication(proxyBeanMethods=false)publicclassAppimplementsWebServerFactoryCustomizer<ConfigurableServletWebSer......
  • K8S:分享一次“乌龙问题”(人为导致的无法正常删除命名空间)
    问题背景背景是这样的,我有一套测试用的K8S集群,发现无法正常删除命名空间了,一直处于Terminating状态,强制删除也不行。于是,再次手动创建了一个名为“test-b”的命名空间,同样也是不能正常删除。于是,展开了排查。不过,查到最后,发现是个毫无技术含量的“乌龙问题”。结果不重要,重要的......
  • (libgdx小结)资源加载器
    一、初始化及常见的APImanager=newAssetManager();//初始化资源管理器manager.load("animation.png",Texture.class);//预加载资源manager.unload("animation.png");//卸载资源manager.isLoaded("animation.png",Texture.class)//判断资源animation.png是否已经加载manager.ge......