Container-Optimized OS 映像具有内置功能,可在发布时自动升级至更新版本。启用此功能后,用户实例能够及时了解最新的安全修复和 Bug 修复。
当 Container-Optimized OS 用作代管式服务(例如 Google Kubernetes Engine、Cloud SQL 等)的一部分时,代管式服务负责为用户更新 Container-Optimized OS 实例。因此,在默认情况下,将对这些用户停用自动更新。
运行对内核升级敏感的生产工作负载并且需要受控资格和发布的用户也应停用自动更新。如需了解详情,请参阅停用自动更新部分。
启用或停用自动更新
在里程碑 117 及更高版本中,自动更新功能默认处于停用状态
所有 Container-Optimized OS 映像上的资源在低于 117 的里程碑中,此功能默认处于启用状态。您可以通过执行以下操作来启用或停用自动更新
设置cos-update-strategy
元数据,包括在新实例、现有实例
或针对项目中的所有实例进行扩缩,如以下部分所述。
在新实例上配置自动更新
创建启用了自动更新的新实例:
gcloud compute instances create INSTANCE_NAME \
--metadata cos-update-strategy=update_enabled
创建一个停用自动更新的新实例:
gcloud compute instances create INSTANCE_NAME \
--metadata cos-update-strategy=update_disabled
为现有实例配置自动更新
为现有实例启用自动更新:
gcloud compute instances add-metadata INSTANCE_NAME \
--metadata cos-update-strategy=update_enabled
停用现有实例的自动更新:
gcloud compute instances add-metadata INSTANCE_NAME \
--metadata cos-update-strategy=update_disabled
为项目中的所有实例配置自动更新
从里程碑 97 开始,您可以使用项目元数据中的元数据标志为项目中的所有实例启用或停用自动更新。
为项目中的所有实例启用更新:
gcloud compute project-info add-metadata \
--metadata cos-update-strategy=update_enabled
为项目中的所有实例停用更新:
gcloud compute project-info add-metadata \
--metadata cos-update-strategy=update_disabled
自动更新设计
Container-Optimized OS 使用主动-被动根分区方案。操作系统映像会完全更新,包括内核在内,而不是像传统 Linux 发行版那样逐个程序包进行更新。提供的映像已启用自动更新功能;也就是说,默认的 Container-Optimized OS 实例始终会下载发布的最新操作系统版本并将其安装在非活跃分区中。
如果您使用的是 LTS 里程碑或 cos-stable 映像系列中的映像,则将获得来自同一里程碑的最新操作系统版本的更新。在 cos-dev 和 cos-beta 映像系列中,更新将是相应映像系列中的最新操作系统版本。
对自动更新行为的更改
Container-Optimized OS 团队正在积极改进我们的后端基础架构,使其能够进行自动更新。在更改过程中,我们将轮替用于对更新载荷进行签名和验证的密钥。但是,在密钥轮替之前发布的映像无法自动更新为轮替后发布的映像。受影响的映像列表如下:
以下映像无法更新为最新版本:
- 里程碑版 77:cos-77-12371-1000-0 之前的映像
- 里程碑版 81:cos-81-12871-1000-0 之前的映像
- 里程碑版 85:cos-85-13310-1000-0 之前的映像
- 里程碑版 86:cos-dev-86-15053-0-0 之前的映像
以下映像将不再接收任何更新:
- 77 之前的所有里程碑,包括之前弃用的里程碑。
如果用户在独立的 Container-Optimized OS 上运行任何受影响的版本,并且启用了自动更新功能,则看不到其实例会更新为较新的版本。在这些情况下,用户应该使用较新的映像重新创建虚拟机实例,手动选择较新的操作系统版本。新版本所有受支持的里程碑将继续支持自动更新。