第 4 章 CSIStorageCapacity [storage.k8s.io/v1]
- 描述
CSIStorageCapacity 存储一个 CSI GetCapacity 调用的结果。对于给定的 StorageClass,这描述了特定拓扑片段中的可用容量。在考虑在什么位置来实例化新的 PersistentVolume 时,可以使用它。
例如,这可表达类似: - StorageClass "standard" 在 "topology.kubernetes.io/zone=us-east1" - StorageClass "localssd" 中可用的 "10 GiB" 带有 "kubernetes.io/hostname=knode-abc123"
以下三种情况都表示,没有容量可用于特定的组合: - 没有合适的拓扑和存储类名称的对象 - 这种对象存在,但容量未设置 - 此类对象存在,但存在容量为零。
这些对象的生成者可以决定哪个方法更合适。
当 CSI 驱动程序选择使用 CSIDriverSpec.StorageCapacity 进行容量感知调度时,kube-scheduler 会消耗它们。调度程序将 MaximumVolumeSize 与请求的待处理卷的大小进行比较,以过滤掉不适合的节点。如果未设置 MaximumVolumeSize,它会回退到与不太精确容量的比较。如果也未设置,调度程序会假定容量不足,并尝试某些其他节点。
- 类型
-
object
- 必填
-
storageClassName
-
4.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
| capacity 是 CSI 驱动程序为其 GetCapacityRequest 中报告的值,其带有与上一字段匹配的 topology 和 parameters。 目前,语义(CSI spec 1.2)定义为:可用于置备卷的存储的可用容量(以字节为单位)。如果没有设置,则信息当前不可用。 | |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| maximumVolumeSize 是 CSI 驱动程序在 GetCapacityResponse 中报告的值,用于带有与上一字段匹配的 GetCapacityRequest 和参数。 这是定义,因为 CSI spec 1.4.0 是可在 CreateVolumeRequest.capacity_range.required_bytes 字段中使用的最大大小来创建与 GetCapacityRequest 中参数相同的卷。Kubernetes API 中对应的值为 ResourceRequirements.Requests 在卷声明中。 | |
| 标准对象元数据。名称没有特定含义。它必须是 DNS 子域(允许 253 个字符)。为确保集群中没有与其他 CSI 驱动程序冲突,建议使用 csisc-<uuid>、生成的名称或以唯一 CSI 驱动程序名称结尾的反向域名。 对象是 namespaced。 更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
| NodeTopology 定义哪些节点有权访问报告容量的存储。如果没有设置,则无法从集群中的任何节点访问存储。如果为空,可从所有节点访问存储。此字段不可变。 | |
|
| storageClassName 代表所报告容量应用到的 StorageClass 名称。它必须满足与 StorageClass 对象的名称相同的要求(非空,DNS 子域)。如果该对象不再存在,CSIStorageCapacity 对象已过时,应该通过其创建者删除。此字段不可变。 |