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

在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主要用于测试和开发场景。

posted @   哪都通临时工  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示