上一篇 下一篇 分享链接 返回 返回顶部

容器CPU内存资源配额配置教程

发布人: 发布时间:9小时前 阅读量:5

前言

在IDC和云计算环境中,合理配置容器资源的CPU和内存配额是保障服务稳定性、提升资源利用率的关键操作。本文将以Docker和Kubernetes两种主流平台为例,提供清晰的配置步骤。

Docker容器资源限制配置

1. 限制CPU

使用--cpus参数指定容器可使用的CPU核心数(支持小数)。例如:

docker run --cpus=1.5 nginx

更细粒度的控制可使用--cpu-shares(相对权重)和--cpuset-cpus(绑定特定核心)。

2. 限制内存

使用--memory参数设定最大内存值:

docker run --memory=512m nginx

可搭配--memory-swap设置交换分区上限(默认与内存相同,如需禁用交换设为-1)。

3. 同时限制CPU和内存

docker run --cpus=1 --memory=1g nginx

Kubernetes容器资源配额配置

1. 在Pod中设置requests和limits

在Pod的resources字段中定义:

spec:
  containers:
  - name: app
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "512Mi"
        cpu: "500m"

requests是调度时保证的最小资源,limits是容器可使用的上限。

2. 通过ResourceQuota设置命名空间级别配额

使用ResourceQuota对象限制整个命名空间的资源总量:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: ns-quota
spec:
  hard:
    requests.cpu: "4"
    requests.memory: "8Gi"
    limits.cpu: "8"
    limits.memory: "16Gi"

3. 使用LimitRange设置默认约束

当Pod未指定资源时,由LimitRange自动注入:

apiVersion: v1
kind: LimitRange
metadata:
  name: default-limits
spec:
  limits:
  - default:
      cpu: 500m
      memory: 512Mi
    defaultRequest:
      cpu: 250m
      memory: 256Mi
    type: Container

验证配置效果

Docker下可通过docker stats实时查看资源使用。Kubernetes下运行kubectl top pod或通过Prometheus监控确认限制生效。

注意事项

  • CPU限制为软限制(可突发),内存限制为硬限制(超限则OOM kill)。
  • 生产环境建议同时设置requests和limits,并保留一定余量。
  • 调整配额后建议进行压力测试,避免影响业务。
目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com