项目配置¶
项目可以通过一组键值配置选项进行配置。有关如何设置这些选项的说明,请参阅配置项目。
键值配置是命名空间的。以下选项可用
项目功能¶
项目功能定义了哪些实体在项目中被隔离,以及哪些实体从default项目继承。
如果feature.*选项设置为true,则相应的实体在项目中被隔离。
注意
当您创建项目时,如果没有显式配置特定选项,则此选项将设置为下表中给出的初始值。
但是,如果您取消设置feature.*选项之一,它不会恢复到初始值,而是恢复到默认值。所有feature.*选项的默认值为false。
项目限制¶
项目限制定义了属于项目的容器和虚拟机可以使用的资源的硬性上限。
根据limits.*选项,限制适用于项目中允许的实体数量(例如,limits.containers或limits.networks)或项目中所有实例的资源使用量的总和(例如,limits.cpu或limits.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.cpu |
| 类型 | 整数 |
此值是项目实例上设置的各个 limits.cpu 配置总和的最大值。
| 键 | limits.disk.pool.POOL_NAME |
| 类型 | 字符串 |
此值是项目的所有实例卷、自定义卷和镜像在此特定存储池上使用的聚合磁盘空间的最大值。
| 键 | limits.memory |
| 类型 | 字符串 |
该值是项目实例上设置的各个 limits.memory 配置总和的最大值。
| 键 | limits.processes |
| 类型 | 整数 |
此值是项目实例上设置的各个 limits.processes 配置总和的最大值。
项目限制¶
为了防止项目的实例访问安全敏感功能(例如容器嵌套或原始 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.* 键生效。要临时删除限制,您可以禁用此选项,而不是清除相关键。
| 键 | restricted.cluster.target |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。设置为 allow 时,此选项允许在创建或移动实例时定位集群成员(直接或通过组)。
| 键 | restricted.containers.interception
|
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow、block 或 full。设置为 allow 时,允许通常安全的拦截选项。文件系统挂载仍然被阻止。
| 键 | restricted.containers.nesting |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。设置为 allow 时,可以将实例的 security.nesting 设置为 true。
| 键 | restricted.containers.privilege |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 unprivileged、isolated 和 allow。
设置为
unpriviliged时,此选项阻止将security.privileged设置为true。设置为
isolated时,此选项阻止将security.privileged和security.idmap.isolated设置为true。设置为
allow时,没有限制。
| 键 | restricted.devices.disk |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow、block 或 managed。
设置为
block时,此选项阻止使用除根设备之外的所有磁盘设备。设置为
managed时,此选项仅在设置了pool=时允许使用磁盘设备。设置为
allow时,对可以使用哪些磁盘设备没有限制。
| 键 | restricted.devices.disk.paths |
| 类型 | 字符串 |
如果 restricted.devices.disk 设置为 allow,则此选项控制磁盘设备可以使用哪些 source。指定一个逗号分隔的路径前缀列表,以限制 source 设置。如果此选项为空,则允许所有路径。
| 键 | restricted.devices.gpu |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.infiniband |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.nic |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow、block 或 managed。
设置为
block时,此选项阻止使用所有网络设备。设置为
managed时,此选项仅在设置了network=时允许使用网络设备。设置为
allow时,对可以使用哪些网络设备没有限制。
| 键 | restricted.devices.pci |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.proxy |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.unix-block |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.unix-char |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.unix-hotplug |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.devices.usb |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为 allow 或 block。
| 键 | restricted.idmap.gid |
| 类型 | 字符串 |
此选项指定实例的 raw.idmap 设置中允许的主机 GID 范围。
| 键 | restricted.idmap.uid |
| 类型 | 字符串 |
此选项指定实例的 raw.idmap 设置中允许的主机 UID 范围。
| 键 | restricted.networks.access |
| 类型 | 字符串 |
指定在该项目中允许使用的网络名称的逗号分隔列表。如果未设置此选项,则所有网络均可访问。
请注意,此设置取决于 restricted.devices.nic 设置。
| 键 | restricted.networks.integrations |
| 类型 | 字符串 |
指定项目中网络可使用的网络集成的逗号分隔列表。
| 键 | restricted.networks.subnets |
| 类型 | 字符串 |
| 默认值 |
|
指定从上行网络分配给本项目使用的网络子网的逗号分隔列表。使用格式<uplink>:<subnet>。
| 键 | restricted.networks.uplinks |
| 类型 | 字符串 |
指定可作为项目中网络上行链路使用的网络名称的逗号分隔列表。
| 键 | restricted.networks.zones |
| 类型 | 字符串 |
| 默认值 |
|
指定可在本项目中使用(或其下属)的网络区域的逗号分隔列表。
| 键 | restricted.virtual-machines.lowlevel |
| 类型 | 字符串 |
| 默认值 |
|
可能的值为allow或block。设置为allow时,可以使用诸如raw.qemu、volatile.*等低级 VM 选项。
项目特定配置¶
有一些服务器配置选项可以在项目中覆盖。此外,您可以为项目添加用户元数据。
| 键 | backups.compression_algorithm |
| 类型 | 字符串 |
指定在本项目中用于备份的压缩算法。可能的值为bzip2、gzip、lzma、xz或none。
| 键 | images.auto_update_interval |
| 类型 | 整数 |
指定以小时为单位的间隔。要禁用查找缓存镜像的更新,请将此选项设置为0。
| 键 | images.compression_algorithm |
| 类型 | 字符串 |
可能的值为bzip2、gzip、lzma、xz或none。