Incus 6.2 已发布¶
2024年5月31日
介绍¶
Incus 团队很高兴地宣布发布 Incus 6.2!
此版本包含来自 德克萨斯大学奥斯汀分校 学生贡献的第二波变更,以及其他一些功能和改进。
像往常一样,您可以在线试用它:https://linuxcontainers.cn/incus/try-it/
尽情享受!
新功能¶
新的 incus top
命令¶
添加了新的 incus top
命令。它基于 Incus 内置的 OpenMetrics 端点,提供了一种刷新实例列表的视图,包括 CPU、内存和磁盘使用情况。
+---------------+-------------+-----------+-----------+ | INSTANCE NAME | CPU TIME(S) | MEMORY | DISK | +---------------+-------------+-----------+-----------+ | foo | 6.73 | 12.44MiB | 341.88MiB | +---------------+-------------+-----------+-----------+ | speedtest | 32.79 | 23.84MiB | 373.50MiB | +---------------+-------------+-----------+-----------+ | v1 | 67130.91 | 254.54MiB | 1.25GiB | +---------------+-------------+-----------+-----------+ Press 'd' + ENTER to change delay Press 's' + ENTER to change sorting method Press CTRL-C to exit Delay: 5s Sorting Method: Alphabetical
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
资源 API 中的系统负载信息¶
资源 API 中添加了一个新部分,用于公开服务器负载信息(1分钟、5分钟、10分钟)以及总进程数。
这对于放置和自动平衡逻辑特别有用,因为它允许仅从 Incus API 获得对各个服务器繁忙程度的良好了解。
stgraber@castiana:~$ incus info --resources System: UUID: 05006c9c-7863-ee11-9e1b-224425600022 Vendor: Framework Product: Laptop 13 (AMD Ryzen 7040Series) Family: Laptop Version: A5 SKU: FRANDGCP05 Serial: FRANDGCPA5340500AZ Type: physical Chassis: Vendor: Framework Type: Notebook Version: A5 Serial: FRANDGCPA5340500AZ Motherboard: Vendor: Framework Product: FRANMDCP05 Serial: FRANMDCPA534040120 Version: A5 Firmware: Vendor: INSYDE Corp. Version: 03.05 Date: 03/29/2024 Load: Processes: 519 Average: 0.80 0.77 0.71 [snip...]
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
查询实例和项目访问信息的功能¶
添加了两个新的 API,允许查询项目的访问列表,甚至特定实例的访问列表。
这与我们的 OpenFGA 支持相集成,并提供了足够新的 OpenFGA 版本,将向您展示究竟哪些人可以访问实例以及他们的角色是什么。
stgraber@castiana:~$ incus info --show-access foo - identifier: stgraber@stgraber.org role: admin provider: openfga stgraber@castiana:~$ incus project info --show-access default - identifier: stgraber@stgraber.org role: admin provider: openfga
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
强制删除项目¶
在处理大量繁忙的项目时,删除它们可能会变得相当令人沮丧,因为必须跟踪并以正确的顺序删除它们包含的所有内容。
为了解决这个问题,我们现在有了 incus project delete --force
,它将指示 Incus 自行以正确的顺序删除所有内容,然后再删除项目本身。
这显然是一件非常危险的事情。命令行工具将始终要求您确认您确实希望完全删除该项目。
stgraber@castiana:~$ incus project delete demo Error: Only empty projects can be removed. stgraber@castiana:~$ incus project delete demo --force Remove demo and everything it contains (instances, images, volumes, networks, ...) (yes/no): yes Project demo deleted
新的 get_project
脚本文本功能¶
对于使用我们脚本文本实例放置功能 (instances.placement.scriptlet
) 的用户,现在添加了一个新函数,get_project
。
这允许检索特定项目的全部详细信息 (api.Project
),如果您希望项目限制或限制影响放置决策,这将特别有用。
文档:https://linuxcontainers.cn/incus/docs/main/explanation/clustering/#instance-placement-scriptlet
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
跨项目查询对象¶
Incus 长期以来一直支持列出所有实例,无论项目如何。
然后最近,这扩展到了还包括存储卷、镜像、配置文件、网络区域和操作。
使用 Incus 6.2,所有剩余的对象集合现在都支持此功能,添加
- 存储桶
- 网络
- 网络 ACL
CLI 已更新以匹配,因此所有与可以是项目特定的对象交互的 list
命令现在也支持 --all-projects
。
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
incus info --resources
中的 PCI 设备¶
所有 PCI 设备现在都包含在 incus info --resources
输出中。
过去,只有那些包含在 GPU 或磁盘部分的设备才能轻松获得。
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
incus-simplestreams
中改进的别名处理¶
最初的 incus-simplestreams
实现将自动生成我们标准的别名外观,基本上是 DISTRIBUTION/RELEASE/VARIANT
,但这不适合所有环境,因此您现在有两个新的参数可以用于 incus-simplestreams add
--no-default-alias
用于禁用上述别名--alias
用于定义自定义别名(可以多次传递)
在 incus
CLI 中将 YAML 提供给 create
命令¶
这项工作从 Incus 6.1 开始,现在已完成。
所有 create
命令以及 incus init
和 incus launch
现在都支持从 stdin 读取初始配置作为 YAML。
这使得更复杂的部署脚本化变得更加容易。
CLI 中可定制的列列表¶
另一项从 Incus 6.1 开始,现在已完成的工作。
所有具有 list
功能的 CLI 命令现在都支持 --column/-c
标志。
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
更多自动生成的文档¶
对于大多数用户来说,这应该不是一个明显的变化,但我们一直在慢慢地将我们的文档迁移到直接从代码中的注释生成,从而降低了文档过时或不同步的风险。
使用 Incus 6.2,以下内容现在以这种方式生成
- 网络区域
- 镜像限制
- 内核限制
- 设备
- 磁盘
- unix-block
- unix-char
- unix-hotplug
- USB
这项工作由 德克萨斯大学奥斯汀分校 学生贡献。
完整变更日志¶
以下是此版本中所有更改的完整列表
完整提交列表
- incusd/instance/lxc: 为镜像限制添加 gendoc 注释
- incusd/instance/qemu: 为镜像限制添加 gendoc 注释
- doc: 更新配置
- doc/image-handling: 使用 gendoc 数据
- incus/storage_bucket: 为密钥创建添加 yaml 支持
- i18n: 更新翻译模板
- incusd/instance/qemu: 修复 StartedAt 处理
- incus/storage: 列表中的可定制列
- i18n: 更新翻译模板
- incusd/network/ovn: 将 LogicalRouterSNATAdd 和 LogicalRouterDNATSNATAdd 移植到 libovsdb
- incusd/network: 更新以适应 OVN 函数更改
- api: instances_scriptlet_get_project
- doc/instances/scriptlet: 添加 get_project
- incusd/scriptlet: 添加 get_project
- api: networks_all_projects
- shared/api: 为网络添加项目字段
- client: 添加 GetNetworksAllProjects
- incus/network: 添加 all-projects
- incusd/db: 添加 GetNetworksAllProjects
- incusd/networks: 添加 all-projects
- internal/instance: 为 limits.kernel 添加 gendoc
- doc: 更新配置
- doc: 为 limits.kernel 使用 gendoc
- api: network_acls_all_projects
- shared/api: 为 NetworkACL 添加项目字段
- client: 添加 GetNetworkACLsAllProjects
- incus/network/acl: 添加 all-projects
- incusd/db: 添加 GetNetworkACLsAllProjects
- incusd/network/acl: 设置项目字段
- incusd/network_acls: 添加 all-projects
- api: storage_buckets_all_projects
- shared/api: 为 StorageBucket 添加项目字段
- client: 添加 GetStoragePoolBucketsAllProjects
- incus/storage/bucket: 添加 all-projects
- incusd/db/storage_buckets: 填充项目字段
- incusd/storage_buckets: 添加 all-projects
- i18n: 更新翻译模板
- incusd/networks: 修复导入遮蔽
- doc/rest-api: 刷新 swagger YAML
- client: 使 GetProfilesAllProjects 与 GetProfiles 对齐
- client: 使 GetNetworkZonesAllProjects 与 GetNetworkZones 对齐
- client: 标准化 GetNetworkAllocation 函数
- incus/network_allocations: 更新以适应客户端更改
- incusd/device/usb: 为 USB 设备添加 gendoc
- doc: 更新配置
- doc: 为 USB 设备使用 gendoc
- api: resources_load
- shared/api: 为资源 API 添加负载
- doc/rest-api: 刷新 swagger YAML
- incusd/resources: 添加负载信息
- incus/info: 添加负载信息
- i18n: 更新翻译模板
- incusd/device/unix: 添加 gendoc 注释
- doc: 更新配置
- doc/devices_unix_block.md: 使用 gendoc 数据
- doc/devices_unix_char.md: 使用 gendoc 数据
- doc/devices_unix_hotplug.md: 使用 gendoc 数据
- incus/top: 添加新命令
- i18n: 更新翻译模板
- incusd/network/zone: 为网络区域添加 gendoc
- doc: 更新配置
- doc: 为网络区域使用 gen doc
- incusd/device/unix: 运行 gofmt
- incus/info: 为 --resources 添加 PCI 设备
- i18n: 更新翻译模板
- incusd/device/disk: 添加 gendoc 注释
- doc: 更新配置
- doc/devices/disk: 使用 gendoc
- incus/network: 列表中的可定制列
- i18n: 更新翻译模板
- incusd/network_zones: 修复项目中区域的列出
- incusd/instance/lxc: 修复 migration.stateful 的处理
- gomod: 更新依赖项
- incusd/network/ovs: 修复错误的 VLANMode 值
- fix: 关闭资源
- incusd/instance: 修复在 32 位体系结构上构建
- incus/network_zone: 为网络区域记录创建添加示例
- i18n: 更新翻译模板
- incus/storage_volume: 为创建添加 yaml 支持
- i18n: 更新翻译模板
- cmd/incus/info: 修复当机箱、主板和固件信息不可用时出现的运行时错误
- 使用 Weblate(德语)翻译
- incusd/instance/qemu: 允许在运行时设置 protection.delete
- doc/api-extension: 修复拼写错误
- shared/api: 引入访问结构
- api: instance_access
- incusd/auth: 引入 GetInstanceAccess
- incusd/instance: 添加访问端点
- api: project_access
- incusd/auth: 引入 GetProjectAccess
- incusd/project: 添加访问端点
- doc/rest-api: 刷新 swagger YAML
- client: 添加 GetInstanceAccess
- client: 添加 GetProjectAccess
- incus/info: 修复 --show-log 的描述
- incus/info: 添加 --show-access
- incus/project: 为 info 添加 --show-access
- i18n: 更新翻译模板
- incusd/auth/fga: 在模型中将 manager 重命名为 admin
- incusd/auth/fga: 重做权限模型
- incusd/auth/fga: 重建模型
- tests: 修复权限更改
- incusd/instance/agent-loader: 支持安装到 /etc
- incusd/apparmor/lxc: 修复规则语法
- incus-simplestreams add: 添加了标志:--no-default-alias,--alias。#875
- incus/storage_volume/snapshot: 支持使用 YAML 创建快照
- i18n: 更新翻译模板
- shared/idmap: 使 get_userns_fd 配置 userns
- incus-migrate: 处理有效的 CA 证书
- incusd/instances_post: 修复迁移到远程集群
- incusd/apparmor: 检测 nosymfollow 支持
- incusd: 设置套接字上的 SELinux 标签
- incus/network: 将 attach-profile 与 attach 对齐
- create_detached_idmapped_mount: 避免双重关闭
- incusd/instance/qemu: 扩展缺失的 QEMU 错误
- doc/installing: 提到 VM 的额外软件包
- incusd/storage/btrfs: 修复 btrfs 参数顺序
- incusd/seccomp/sysinfo: 处理 64 位系统上的 32 位
- api: projects_force_delete
- incusd/api_project: 添加强制删除端点
- doc/rest-api: 刷新 swagger YAML
- client: 引入 DeleteProjectForce
- cmd/incus/project: 添加 --force 到删除
- i18n: 更新翻译模板
- incusd/project: 简化 projectIsEmpty
- incusd/db: 引入 GetNetworkZoneURIs
- incusd/db: 引入 GetStorageBucketURIs
- incusd/api_project: 修复 UsedBy
- incusd/api_project: 添加强制删除逻辑
- incus/completion: 减少 API 调用
- incus/publish: 完成快照名称
- incus/completion: 修复导入遮蔽
- 使用 Weblate(法语)翻译
- Makefile: 为 Go 1.21 固定 go-acme/lego
- 更新依赖项
- cmd/incus/console: 清理 --show-log
- incusd/instance_console: 删除旧检查
- incusd/instance_console: 处理丢失的日志文件
- incusd/instance_console: 在日志为空时不要失败
- incusd/instance_console: 清理错误消息
- i18n: 更新翻译模板
- incusd/device/sriov: 将代码与注释对齐
文档¶
Incus 文档可以在以下位置找到:
https://linuxcontainers.cn/incus/docs/main/
软件包¶
由于 Incus 上游只发布常规的发布版压缩包,因此没有官方的 Incus 软件包。以下是使 Incus 运行起来的一些可用选项。
在 Linux 上安装 Incus 服务器¶
Incus 可用于大多数常见的 Linux 发行版。您将在我们的文档中找到详细的安装说明。
https://linuxcontainers.cn/incus/docs/main/installing/
用于 Incus 客户端的 Homebrew 软件包¶
客户端工具可通过 HomeBrew 在 Linux 和 MacOS 上使用。
https://formulae.brew.sh.cn/formula/incus
用于 Incus 客户端的 Chocolatey 软件包¶
客户端工具可通过 Chocolatey 在 Windows 用户中使用。
https://community.chocolatey.org/packages/incus/6.2.0
用于 Incus 客户端的 Winget 软件包¶
客户端工具也可通过 Winget 在 Windows 用户中使用。
https://winstall.app/apps/LinuxContainers.Incus
支持¶
每月功能发布只支持到下一个发布版出来为止。需要更长支持期限和更少变更的用户应该考虑使用 Incus 6.0 LTS。
社区支持提供于:https://discuss.linuxcontainers.org
商业支持可通过以下方式获得:https://zabbly.com/incus
错误报告可提交至:https://github.com/lxc/incus/issues