Kubernetes v1.37:存储版本迁移默认启用
内容提要
Kubernetes v1.37中,存储版本迁移(SVM)功能正式GA,内置API和控制器默认启用。用户可通过创建StorageVersionMigration对象,自动将资源迁移至当前存储版本,解决CRD版本升级或加密密钥轮换时的旧数据重写问题。迁移状态可监控,成功后更新CRD的storedVersions,简化操作并提升可靠性。
延伸解读
为何存储版本迁移对CRD升级至关重要
当CRD需要移除旧API版本(如v1alpha1)时,若存储中仍有旧版本数据,直接删除会导致数据无法读取。存储版本迁移通过自动重写所有资源至当前存储版本,确保安全移除旧版本。此功能解决了手动脚本或外部工具带来的繁琐与错误风险,尤其适合频繁迭代CRD的团队。
加密密钥轮换的实用价值
启用静态加密或轮换密钥后,已有资源不会自动重新加密,需通过API服务器重写。存储版本迁移提供声明式对象,自动触发重写,简化了管理员操作。相比手动kubectl命令,此方式更可靠且可监控,降低因密钥轮换导致的数据泄露风险。
迁移状态监控与重试机制
迁移过程通过StorageVersionMigration对象的状态可实时监控,成功条件为Succeeded=True。若迁移后CRD的storedVersions未更新,说明迁移期间CRD被修改,需重试迁移。此机制确保迁移的完整性和一致性,避免因并发变更导致的数据残留。
Q&A
Kubernetes v1.37中存储版本迁移(SVM)功能的状态是什么?
在Kubernetes v1.37中,存储版本迁移(SVM)功能正式达到GA(一般可用)状态,内置的StorageVersionMigration API和控制器默认启用。
存储版本迁移(SVM)主要解决什么问题?
SVM主要解决当需要更改资源的存储版本时,旧数据仍以旧版本存储的问题。例如,在CRD升级时删除旧API版本,或进行加密密钥轮换时,需要重写现有资源以确保它们使用最新的存储版本。
如何手动触发存储版本迁移?
通过创建一个StorageVersionMigration对象来触发迁移。例如,创建一个名为crontabs-migration的StorageVersionMigration,指定要迁移的资源组和资源类型,然后使用kubectl apply应用该清单。
如何监控存储版本迁移的进度和结果?
可以使用kubectl get storageversionmigration.storagemigration.k8s.io/crontabs-migration -o yaml查看迁移状态。成功的迁移会显示Succeeded条件为True,并带有reason: StorageVersionMigrationSucceeded。
存储版本迁移成功后,CRD的storedVersions字段会如何变化?
迁移成功后,CRD的.status.storedVersions应更新为只包含首选版本。如果迁移后storedVersions未更新,说明迁移期间CRD被修改,需要重试迁移以安全弃用旧存储版本。
存储版本迁移与加密密钥轮换有什么关系?
当配置静态加密或轮换加密密钥时,现有资源在通过API服务器重写之前仍以未加密或旧密钥加密的状态存储。存储版本迁移可以强制重写这些资源,确保它们使用新的加密配置。
存储版本迁移功能相比传统方法有什么优势?
相比手动kubectl get/replace脚本或部署外部组件kube-storage-version-migrator,内置的SVM是声明式的、自动化的,并且易于监控,减少了繁琐和易错的操作。