首页 > 解决方案 > Kubernetes CRD 中的“存储”是什么意思?

问题描述

CRD 中有一个名为“storage”的字段

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
spec:
      ...
      versions:
      - name: v1
        # Each version can be enabled/disabled by Served flag.
        served: true
        # One and only one version must be marked as the storage version.
        storage: true
      ...

这是什么意思?
所有文档都说是上面的评论:

 One and only one version must be marked as the storage version.

它根本没有帮助。

标签: kubernetes

解决方案


一个 k8s 资源(包括自定义资源)可以同时支持多个 API 版本(例如v1beta1v1等)。它的存在有多种原因,例如 API 稳定性和向后兼容性。

如您所知,在创建资源对象时,k8s 将其存储在持久存储中,例如etcd. 带有的版本storage: true表示将资源持久化到存储时应使用此版本。存储一个对象的多个副本很不方便。这就是为什么One and only one version must be marked as the storage version。应使用带有转换 webhook 的其他版本的按需storage: false切换,以在具有推荐的架构更改和自定义逻辑的版本之间切换。

参考:


推荐阅读