项目配置

项目可以通过一组键值配置选项进行配置。有关如何设置这些选项的说明,请参阅配置项目

键值配置是命名空间的。以下选项可用

项目功能

项目功能定义了哪些实体在项目中被隔离,以及哪些实体从default项目继承。

如果feature.*选项设置为true,则相应的实体在项目中被隔离。

注意

当您创建项目时,如果没有显式配置特定选项,则此选项将设置为下表中给出的初始值。

但是,如果您取消设置feature.*选项之一,它不会恢复到初始值,而是恢复到默认值。所有feature.*选项的默认值为false

features.images

是否为项目使用单独的镜像集

features.images
类型

布尔值

默认值

false

初始值

true

此设置适用于镜像和镜像别名。

features.networks

是否为项目使用单独的网络集

features.networks
类型

布尔值

默认值

false

初始值

false

features.networks.zones

是否为项目使用单独的网络区域集

features.networks.zones
类型

布尔值

默认值

false

初始值

false

features.profiles

是否为项目使用单独的配置文件集

features.profiles
类型

布尔值

默认值

false

初始值

true

features.storage.buckets

是否为项目使用单独的存储桶集

features.storage.buckets
类型

布尔值

默认值

false

初始值

true

features.storage.volumes

是否为项目使用单独的存储卷集

features.storage.volumes
类型

布尔值

默认值

false

初始值

true

项目限制

项目限制定义了属于项目的容器和虚拟机可以使用的资源的硬性上限。

根据limits.*选项,限制适用于项目中允许的实体数量(例如,limits.containerslimits.networks)或项目中所有实例的资源使用量的总和(例如,limits.cpulimits.processes)。在后一种情况下,限制通常适用于为每个实例配置的资源限制(直接或通过配置文件),而不是实际使用的资源。

例如,如果您将项目的 limits.memory 配置设置为 50GiB,则项目实例上定义的所有 limits.memory 配置键的各个值的总和将保持在 50 GiB 以下。

类似地,将项目的 limits.cpu 配置键设置为 100 表示各个 limits.cpu 值的总和将保持在 100 以下。

使用项目限制时,必须满足以下条件

  • 当您设置其中一个 limits.* 配置并且实例存在相应的配置时,项目中的所有实例都必须定义相应的配置(直接或通过配置文件)。有关实例配置选项,请参阅 资源限制

  • 如果启用了 CPU 固定,则无法使用 limits.cpu 配置。这意味着要在项目上使用 limits.cpu,项目中每个实例的 limits.cpu 配置必须设置为 CPU 数量,而不是 CPU 集或范围。

  • limits.memory 配置必须设置为绝对值,而不是百分比。

limits.containers

项目中可以创建的容器的最大数量

limits.containers
类型

整数

limits.cpu

项目中使用的 CPU 的最大数量

limits.cpu
类型

整数

此值是项目实例上设置的各个 limits.cpu 配置总和的最大值。

limits.disk

项目使用的最大磁盘空间

limits.disk
类型

字符串

此值是项目的所有实例卷、自定义卷和镜像使用的聚合磁盘空间的最大值。

limits.disk.pool.POOL_NAME

项目在此存储池上使用的最大磁盘空间

limits.disk.pool.POOL_NAME
类型

字符串

此值是项目的所有实例卷、自定义卷和镜像在此特定存储池上使用的聚合磁盘空间的最大值。

limits.instances

项目中可以创建的实例的最大数量

limits.instances
类型

整数

limits.memory

项目主机内存的使用限制

limits.memory
类型

字符串

该值是项目实例上设置的各个 limits.memory 配置总和的最大值。

limits.networks

项目可以拥有的网络的最大数量

limits.networks
类型

整数

limits.processes

项目内进程的最大数量

limits.processes
类型

整数

此值是项目实例上设置的各个 limits.processes 配置总和的最大值。

limits.virtual-machines

项目中可以创建的虚拟机的最大数量

limits.virtual-machines
类型

整数

项目限制

为了防止项目的实例访问安全敏感功能(例如容器嵌套或原始 LXC 配置),请将 restricted 配置选项设置为 true。然后,您可以使用各种 restricted.* 选项来选择通常会被 restricted 阻止的各个功能并允许它们,以便项目实例可以使用它们。

例如,要限制项目并阻止所有安全敏感功能,但允许容器嵌套,请输入以下命令

incus project set <project_name> restricted=true
incus project set <project_name> restricted.containers.nesting=allow

每个安全敏感功能都具有关联的 restricted.* 项目配置选项。如果要允许使用某个功能,请更改其 restricted.* 选项的值。大多数 restricted.* 配置是二进制开关,可以设置为 block(默认值)或 allow。但是,某些选项支持其他值以进行更细粒度的控制。

注意

您必须将 restricted 配置设置为 true,任何 restricted.* 选项才能生效。如果 restricted 设置为 false,则更改 restricted.* 选项无效。

将所有 restricted.* 键设置为 allow 等效于将 restricted 本身设置为 false

restricted

是否阻止访问安全敏感功能

restricted
类型

布尔值

默认值

false

必须启用此选项才能使 restricted.* 键生效。要临时删除限制,您可以禁用此选项,而不是清除相关键。

restricted.backups

是否阻止创建实例或卷备份

restricted.backups
类型

字符串

默认值

block

可能的值为 allowblock

restricted.cluster.groups

可以定位的集群组

restricted.cluster.groups
类型

字符串

如果指定,此选项将阻止定位除提供的集群组之外的其他集群组。

restricted.cluster.target

是否阻止定位集群成员

restricted.cluster.target
类型

字符串

默认值

block

可能的值为 allowblock。设置为 allow 时,此选项允许在创建或移动实例时定位集群成员(直接或通过组)。

restricted.containers.interception

是否阻止使用系统调用拦截选项

restricted.containers.interception

类型

字符串

默认值

block

可能的值为 allowblockfull。设置为 allow 时,允许通常安全的拦截选项。文件系统挂载仍然被阻止。

restricted.containers.lowlevel

是否阻止使用底层容器选项

restricted.containers.lowlevel
类型

字符串

默认值

block

可能的值为 allowblock。设置为 allow 时,可以使用诸如 raw.lxcraw.idmapvolatile.* 等底层容器选项。

restricted.containers.nesting

是否阻止运行嵌套的 Incus

restricted.containers.nesting
类型

字符串

默认值

block

可能的值为 allowblock。设置为 allow 时,可以将实例的 security.nesting 设置为 true

restricted.containers.privilege

阻止哪些特权容器设置

restricted.containers.privilege
类型

字符串

默认值

unprivileged

可能的值为 unprivilegedisolatedallow

restricted.devices.disk

可以使用哪些磁盘设备

restricted.devices.disk
类型

字符串

默认值

managed

可能的值为 allowblockmanaged

  • 设置为 block 时,此选项阻止使用除根设备之外的所有磁盘设备。

  • 设置为 managed 时,此选项仅在设置了 pool= 时允许使用磁盘设备。

  • 设置为 allow 时,对可以使用哪些磁盘设备没有限制。

restricted.devices.disk.paths

磁盘设备可以使用哪些 source

restricted.devices.disk.paths
类型

字符串

如果 restricted.devices.disk 设置为 allow,则此选项控制磁盘设备可以使用哪些 source。指定一个逗号分隔的路径前缀列表,以限制 source 设置。如果此选项为空,则允许所有路径。

restricted.devices.gpu

是否阻止使用类型为 gpu 的设备

restricted.devices.gpu
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.infiniband

是否阻止使用类型为 infiniband 的设备

restricted.devices.infiniband
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.nic

可以使用哪些网络设备

restricted.devices.nic
类型

字符串

默认值

managed

可能的值为 allowblockmanaged

  • 设置为 block 时,此选项阻止使用所有网络设备。

  • 设置为 managed 时,此选项仅在设置了 network= 时允许使用网络设备。

  • 设置为 allow 时,对可以使用哪些网络设备没有限制。

restricted.devices.pci

是否阻止使用类型为 pci 的设备

restricted.devices.pci
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.proxy

是否阻止使用类型为 proxy 的设备

restricted.devices.proxy
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.unix-block

是否阻止使用类型为 unix-block 的设备

restricted.devices.unix-block
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.unix-char

是否阻止使用类型为 unix-char 的设备

restricted.devices.unix-char
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.unix-hotplug

是否阻止使用类型为 unix-hotplug 的设备

restricted.devices.unix-hotplug
类型

字符串

默认值

block

可能的值为 allowblock

restricted.devices.usb

是否阻止使用类型为 usb 的设备

restricted.devices.usb
类型

字符串

默认值

block

可能的值为 allowblock

restricted.idmap.gid

raw.idmap 中允许哪些主机 GID 范围

restricted.idmap.gid
类型

字符串

此选项指定实例的 raw.idmap 设置中允许的主机 GID 范围。

restricted.idmap.uid

raw.idmap 中允许哪些主机 UID 范围

restricted.idmap.uid
类型

字符串

此选项指定实例的 raw.idmap 设置中允许的主机 UID 范围。

restricted.networks.access

在该项目中允许使用哪些网络名称

restricted.networks.access
类型

字符串

指定在该项目中允许使用的网络名称的逗号分隔列表。如果未设置此选项,则所有网络均可访问。

请注意,此设置取决于 restricted.devices.nic 设置。

restricted.networks.integrations

在该项目中可以使用哪些网络集成

restricted.networks.integrations
类型

字符串

指定项目中网络可使用的网络集成的逗号分隔列表。

restricted.networks.subnets

为本项目分配哪些网络子网

restricted.networks.subnets
类型

字符串

默认值

block

指定从上行网络分配给本项目使用的网络子网的逗号分隔列表。使用格式<uplink>:<subnet>

restricted.networks.zones

本项目可以使用哪些网络区域

restricted.networks.zones
类型

字符串

默认值

block

指定可在本项目中使用(或其下属)的网络区域的逗号分隔列表。

restricted.snapshots

是否阻止创建实例或卷快照

restricted.snapshots
类型

字符串

默认值

block

restricted.virtual-machines.lowlevel

是否阻止使用低级 VM 选项

restricted.virtual-machines.lowlevel
类型

字符串

默认值

block

可能的值为allowblock。设置为allow时,可以使用诸如raw.qemuvolatile.*等低级 VM 选项。

项目特定配置

有一些服务器配置选项可以在项目中覆盖。此外,您可以为项目添加用户元数据。

backups.compression_algorithm

用于备份的压缩算法

backups.compression_algorithm
类型

字符串

指定在本项目中用于备份的压缩算法。可能的值为bzip2gziplzmaxznone

images.auto_update_cached

是否自动更新项目中的缓存镜像

images.auto_update_cached
类型

布尔值

images.auto_update_interval

查找缓存镜像更新的间隔

images.auto_update_interval
类型

整数

指定以小时为单位的间隔。要禁用查找缓存镜像的更新,请将此选项设置为0

images.compression_algorithm

项目中新镜像使用的压缩算法

images.compression_algorithm
类型

字符串

可能的值为bzip2gziplzmaxznone

images.default_architecture

在混合架构集群中使用的默认架构

images.default_architecture
类型

字符串

images.remote_cache_expiry

项目中何时刷新未使用的缓存远程镜像

images.remote_cache_expiry
类型

整数

指定未使用缓存镜像过期的天数。

user.*

用户提供的自由格式键值对

user.*
类型

字符串