资源限制

概述

自 Rocky 版本发布以来,可以限制已部署容器的资源使用。在 Kolla Ansible 中,要限制的容器资源被称为维度。

Docker 文档 提供了有关容器资源限制的信息。Kolla Ansible 当前支持的资源是

cpu_period
cpu_quota
cpu_shares
cpuset_cpus
cpuset_mems
mem_limit
mem_reservation
memswap_limit
kernel_memory
blkio_weight
ulimits

预部署配置

维度被定义为 Docker 资源名称的映射

资源限制

资源

数据类型

默认值

cpu_period

整数

0

blkio_weight

整数

0

cpu_quota

整数

0

cpu_shares

整数

0

mem_limit

整数

0

memswap_limit

整数

0

mem_reservation

整数

0

cpuset_cpus

字符串

‘’(空字符串)

cpuset_mems

字符串

‘’(空字符串)

ulimits

Dict

{}

变量 default_container_dimensions 设置所有支持的容器的默认维度,默认情况下这些维度是未限制的。

每个支持的容器都有一个关联的变量,<container name>_dimensions,可用于设置容器的资源。例如,nova_libvirt 容器的维度通过变量 nova_libvirt_dimensions 设置。

例如,要限制所有支持的容器可以使用的 CPU 数量,请将以下内容添加到 /etc/kolla/globals.yml 中的维度选项部分

default_container_dimensions:
  cpuset_cpus: "1"

例如,要限制 nova_libvirt 容器可以使用的 CPU 数量,请将以下内容添加到 /etc/kolla/globals.yml 中的维度选项部分

nova_libvirt_dimensions:
  cpuset_cpus: "2"

如何在 kolla 中配置 ulimits

<container_name>_dimensions:
  ulimits:
    nofile:
      soft: 131072
      hard: 131072
    fsize:
      soft: 131072
      hard: 131072

有效名称列表可以在 [此处] (https://github.com/docker/go-units/blob/d4a9b9617350c034730bc5051c605919943080bf/ulimit.go#L46-L63) 找到

部署

要部署资源受限的容器,请像往常一样运行部署

$ kolla-ansible deploy -i /path/to/inventory