Volume

Volume 表示 Pod 中一个有名字的卷,可以由 Pod 中的任意容器进行访问。

import "k8s.io/api/core/v1"

Volume

Volume 表示 Pod 中一个有名字的卷,可以由 Pod 中的任意容器进行访问。


暴露的持久卷

投射

  • configMap (ConfigMapVolumeSource)

    configMap 表示应填充此卷的 configMap。

    将 ConfigMap 适配到一个卷中。目标 ConfigMap 的 data 字段的内容将以文件的形式呈现在一个卷中, 使用 data 字段中的键名作为文件名,除非 items 元素中已经填充了由键名到路径的特定映射。 ConfigMap 卷支持所有权管理和 SELinux 重新打标签。

    • configMap.name (string)

    被引用资源的名称。此字段实际上是必需的,但由于向后兼容性,可以允许为空。 此类型的实例如果将此字段的值设为空,几乎可以肯定是错误的。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names

    • configMap.optional (boolean)

      optional 指定是否所引用的 ConfigMap 或其键必须已经被定义。

    • configMap.defaultMode (int32)

      defaultMode 是可选的:默认情况下,模式位用于为已创建的文件设置权限。 必须是 0000 到 0777 之间的八进制值或 0 到 511 之间的十进制值。 YAML 既接受八进制值也接受十进制值,JSON 针对模式位需要十进制值。此字段默认为 0644。 路径内的目录不受此设置的影响。这可能与影响文件模式的其他选项(如 fsGroup)有冲突,且结果可以是其他模式位也被设置。

    • configMap.items ([]KeyToPath)

      原子:将在合并期间被替换

      如果未指定 items,则所引用的 ConfigMap 的 data 字段中的每个键值对将作为一个文件被投射到卷中, 这个文件的名称是键名,而文件的内容是键的取值。 如果指定 items,则所列出的键将被投射到指定的路径中,且不会显示未列出的键。 如果指定的键不在 ConfigMap 中,则卷设置将出错,除非对应的键被标记为可选。 路径必须是相对路径,不能包含 “..” 路径,也不能以 “..” 开头。

  • secret (SecretVolumeSource)

    secret 表示用来填充此卷的 Secret。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#secret

    将 Secret 适配到一个卷中。 目标 Secret 的 data 字段的内容将以文件的形式呈现在一个卷中,使用 data 字段中的键名作为文件名。 Secret 卷支持所有权管理和 SELinux 重新打标签。

    • secret.defaultMode (int32)

      defaultMode 是可选的:默认情况下,模式位用于为已创建的文件设置权限。 必须是 0000 到 0777 之间的八进制值或 0 到 511 之间的十进制值。 YAML 既接受八进制值也接受十进制值,JSON 针对模式位需要十进制值。此字段默认为 0644。 路径内的目录不受此设置的影响。 这可能与影响文件模式的其他选项(如 fsGroup)有冲突,且结果可以是其他模式位也被设置。

    • secret.items ([]KeyToPath)

      原子:将在合并期间被替换

      如果未指定 items,则所引用的 Secret 的 data 字段中的每个键值对将作为一个文件被投射到卷中, 这个文件的名称是键名,而文件的内容是键的取值。 如果指定 items,则所列出的键将被投射到指定的路径中,且不会显示未列出的键。 如果指定的键不在 Secret 中,则卷设置将出错,除非对应的键被标记为可选。 路径必须是相对路径,不能包含 “..” 路径,也不能以 “..” 开头。

  • downwardAPI (DownwardAPIVolumeSource)

    downwardAPI 表示有关 Pod 的 Downward API,用来填充此卷。

    DownwardAPIVolumeSource 表示包含 Downward API 信息的一个卷。Downward API 卷支持所有权管理和 SELinux 重新打标签。

    • downwardAPI.defaultMode (int32)

      可选:默认情况下,模式位用于已创建的文件。 必须是可选的:默认情况下,模式位用于为已创建的文件设置权限。 必须是 0000 到 0777 之间的八进制值或 0 到 511 之间的十进制值。 YAML 既接受八进制值也接受十进制值,JSON 针对模式位需要十进制值。此字段默认为 0644。 路径内的目录不受此设置的影响。这可能与影响文件模式的其他选项(如 fsGroup)有冲突,且结果可以是其他模式位也被设置。

    • downwardAPI.items ([]DownwardAPIVolumeFile)

      原子:将在合并期间被替换

      items 是 Downward API 卷文件的列表。

  • projected (ProjectedVolumeSource)

    这是供 Secret、ConfigMap 和 Downward API 等所有资源使用的投射项。

    表示一个投射的卷源。

    • projected.defaultMode (int32)

      defaultMode 是默认情况下用于为已创建的文件设置权限的模式位。 必须是 0000 到 0777 之间的八进制值或 0 到 511 之间的十进制值。 YAML 既接受八进制值也接受十进制值,JSON 针对模式位需要十进制值。 路径内的目录不受此设置的影响。 这可能与影响文件模式的其他选项(如 fsGroup)有冲突,且结果可以是其他模式位也被设置。

    • projected.sources ([]VolumeProjection)

      原子:将在合并期间被替换

      sources 是卷投射的列表。此列表中的每个条目处理一个数据源。

      这里的投射项目可能与其他受支持的卷类型一起进行投射。这些字段中必须且仅能设置一个。

      • projected.sources.clusterTrustBundle(ClusterTrustBundleProjection)

        clusterTrustBundle 允许 Pod 访问一个自动更新的文件中 ClusterTrustBundle 对象的 .spec.trustBundle 字段。

        处于 Alpha 阶段,由 ClusterTrustBundleProjection 特性门控进行控制。

        ClusterTrustBundle 对象可以通过名称选择,也可以通过签名者名称和标签选择算符的组合进行选择。

        kubelet 对写入 Pod 文件系统的 PEM 内容进行了严格的规范化。 像跨块注释和块头这类冷门 PEM 特性被剥离。证书被去重。文件内证书的顺序是任意的,kubelet 可能会随着时间改变其顺序。

        ClusterTrustBundleProjection 描述如何选择一组 ClusterTrustBundle 对象并将其内容投射到 Pod 文件系统中。

        • projected.sources.clusterTrustBundle.path (string),必需

          相对于卷根的路径,用于写入信任包。

        • projected.sources.clusterTrustBundle.labelSelectorLabelSelector

          选择所有匹配此标签选择算符的 ClusterTrustBundle。仅在 signerName 被设置时有效。 与 name 互斥。如果不设置,则解释为“没有匹配项”。如果设置但为空,则解释为“匹配所有”。

        • projected.sources.clusterTrustBundle.name (string)

          通过对象名称选择单个 clusterTrustBundle。与 signerName 和 labelSelector 互斥。

        • projected.sources.clusterTrustBundle.optional (boolean)

          如果为 true,若引用的 ClusterTrustBundle 不可用,则不会阻止 Pod 启动。 如果使用 name,则允许指定的 ClusterTrustBundle 不存在。 如果使用 signerName,则 signerName 和 labelSelector 的组合被允许以匹配零个 ClusterTrustBundle。

        • projected.sources.clusterTrustBundle.signerName (string)

          选择所有与此签名者名称匹配的 ClusterTrustBundle。此字段与 name 互斥。 所有选定的 ClusterTrustBundle 的内容将被统一并去重。

      • projected.sources.configMap (ConfigMapProjection)

        与要投射的 ConfigMap 数据有关的 ConfigMap 信息。

        将 ConfigMap 适配到一个投射的卷中。 目标 ConfigMap 的 Data 字段的内容将以文件的形式呈现在一个被投射的卷中, 使用 data 字段中的键名作为文件名,除非 items 元素中已经填充了由键名到路径的特定映射。 请注意,这等同于没有默认模式的 ConfigMap 卷源。

        • projected.sources.configMap.name (string)

          被引用资源的名称。此字段实际上是必需的,但由于向后兼容性,可以允许为空。 此类型的实例如果将此字段的值设置为空,几乎可以肯定是错误的。更多信息: https://kubernetes.io/zh-cn/docs/concepts/overview/working-with-objects/names/#names

        • projected.sources.configMap.optional (boolean)

          optional 指定是否所引用的 ConfigMap 或其键必须已经被定义。

        • projected.sources.configMap.items ([]KeyToPath)

          原子:将在合并期间被替换

          如果未指定 items,则所引用的 ConfigMap 的 data 字段中的每个键值对将作为一个文件被投射到卷中, 这个文件的名称是键名,而文件的内容是键的取值。 如果指定 items,则所列出的键将被投射到指定的路径中,且不会显示未列出的键。 如果指定的键不在 ConfigMap 中,则卷设置将出错,除非对应的键被标记为可选。 路径必须是相对路径,不能包含 “..” 路径,也不能以 “..” 开头。

      • projected.sources.downwardAPI (DownwardAPIProjection)

        与要投射的 downwardAPI 数据有关的 downwardAPI 信息。

        表示投射到投射卷的 Downward API 信息。请注意,这等同于没有默认模式的 downwardAPI 卷源。

        • projected.sources.downwardAPI.items ([]DownwardAPIVolumeFile)

          原子:将在合并期间被替换

          items 是 DownwardAPIVolume 文件的列表。

      • projected.sources.secret (SecretProjection)

        与要投射的 Secret 数据有关的 Secret 信息。

        将 Secret 适配到一个投射卷中。 目标 Secret 的 data 字段的内容将以文件的形式呈现在一个投射卷中,使用 data 字段中的键名作为文件名。 请注意,这等同于没有默认模式的 Secret 卷源。

        • projected.sources.secret.optional (boolean)

          optional 字段指定是否 Secret 或其键必须已经定义。

        • projected.sources.secret.items ([]KeyToPath)

          原子:将在合并期间被替换

          如果未指定 items,则所引用的 Secret 的 data 字段中的每个键值对将作为一个文件被投射到卷中, 这个文件的名称是键名,而文件的内容是键的取值。 如果指定 items,则所列出的键将被投射到指定的路径中,且不会显示未列出的键。 如果指定的键不在 Secret 中,则卷设置将出错,除非对应的键被标记为可选。 路径必须是相对路径,不能包含 “..” 路径,也不能以 “..” 开头。

      • projected.sources.serviceAccountToken (ServiceAccountTokenProjection)

        serviceAccountToken 是与要投射的服务账号令牌数据有关的信息。

        ServiceAccountTokenProjection 表示一个投射的服务账号令牌卷。 这种投射可用于将服务账号令牌插入到 Pod 运行时文件系统,供访问 API(Kubernetes API Server 或其他)使用。

        • projected.sources.serviceAccountToken.path (string),必需

          path 是相对于令牌投射目标文件的挂载点的路径。

        • projected.sources.serviceAccountToken.audience (string)

          audience 是令牌的目标受众。 令牌的接收方必须用令牌受众中指定的一个标识符来标识自己,否则应拒绝此令牌。 受众默认为 apiserver 的标识符。

        • projected.sources.serviceAccountToken.expirationSeconds (int64)

          expirationSeconds 是所请求的服务账号令牌的有效期。 当令牌即将到期时,kubelet 卷插件将主动轮换服务账号令牌。 如果令牌超过其生存时间的 80% 或令牌超过 24 小时,kubelet 将开始尝试轮换令牌。 默认为 1 小时且必须至少为 10 分钟。

本地/临时目录

持久卷

  • awsElasticBlockStore (AWSElasticBlockStoreVolumeSource)

    awsElasticBlockStore 表示挂接到 kubelet 的主机随后暴露给 Pod 的一个 AWS Disk 资源。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#awselasticblockstore

    表示 AWS 上的 Persistent Disk 资源。挂载到一个容器之前 AWS EBS 磁盘必须存在。 该磁盘还必须与 kubelet 位于相同的 AWS 区域中。AWS EBS 磁盘只能以读/写一次进行挂载。 AWS EBS 卷支持所有权管理和 SELinux 重新打标签。

    • awsElasticBlockStore.partition (int32)

      partition 是你要挂载的卷中的分区。如果省略,则默认为按卷名称进行挂载。例如:对于卷 /dev/sda1, 将分区指定为 “1”。类似地,/dev/sda 的卷分区为 “0”(或可以将属性留空)。

    • awsElasticBlockStore.readOnly (boolean)

      readOnly 值为 true 将使得卷挂载被强制设置为 readOnly。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#awselasticblockstore

  • azureDisk (AzureDiskVolumeSource)

    azureDisk 表示挂载到主机上并绑定挂载到 Pod 上的 Azure 数据盘。

    azureDisk 表示挂载到主机上并绑定挂载到 Pod 上的 Azure 数据盘。

    • azureDisk.diskName (string),必需

      diskName 是 Blob 存储中数据盘的名称。

    • azureDisk.diskURI (string),必需

      diskURI 是 Blob 存储中数据盘的 URI。

    • azureDisk.cachingMode (string)

      cachingMode 是主机缓存(Host Caching)模式:None、Read Only、Read Write。

    • azureDisk.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。 例如 “ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。

    • azureDisk.kind (string)

      kind 预期值包括:

      • Shared:每个存储帐户多个 Blob 磁盘;
      • Dedicated:每个存储帐户单个 Blob 磁盘;
      • Managed:azure 托管的数据盘(仅托管的可用性集合中)。

      默认为 Shared。

    • azureDisk.readOnly (boolean)

      readOnly 默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

  • azureFile (AzureFileVolumeSource)

    azureDisk 表示挂载到主机上并绑定挂载到 Pod 上的 Azure File Service。

    azureFile 表示挂载到主机上并绑定挂载到 Pod 上的 Azure File Service。

    • azureFile.secretName (string),必需

      secretName 是包含 Azure 存储账号名称和主键的 Secret 的名称。

    • azureFile.shareName (string),必需

      shareName 是 Azure 共享名称。

    • azureFile.readOnly (boolean)

      readOnly 默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

  • cinder (CinderVolumeSource)

    cinder 表示 kubelet 主机上挂接和挂载的 Cinder 卷。更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md

    表示 Openstack 中的一个 Cinder 卷资源。挂载到一个容器之前 Cinder 卷必须已经存在。 该卷还必须与 kubelet 位于相同的地区中。cinder 卷支持所有权管理和 SELinux 重新打标签。

    • cinder.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。例如:“ext4”、“xfs”、“ntfs”。 如果未指定,则隐式推断为“ext4”。更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md

    • cinder.readOnly (boolean)

      readOnly 默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。 更多信息: https://examples.k8s.io/mysql-cinder-pd/README.md

    • cinder.secretRef (LocalObjectReference)

      secretRef 是可选的。指向 Secret 对象,内含的参数用于连接到 OpenStack。

  • csi (CSIVolumeSource)

    csi 表示由某个外部容器存储接口(Container Storage Interface,CSI)驱动处理的临时存储(Beta 特性)。

    表示要挂载的卷的源位置,由外部 CSI 驱动进行管理。

    • csi.driver (string),必需

      driver 是处理此卷的 CSI 驱动的名称。咨询你的管理员以获取在集群中注册的正确名称。

    • csi.fsType (string)

      要挂载的 fsType。例如 “ext4”、“xfs”、“ntfs”。 如果未提供,则将空值传递给关联的 CSI 驱动,以便决定要应用的默认文件系统。

    • csi.nodePublishSecretRef (LocalObjectReference)

      nodePublishSecretRef 是对包含敏感信息的 Secret 对象的引用, 该 Secret 对象将被传递到 CSI 驱动以完成 CSI NodePublishVolume 和 NodeUnpublishVolume 调用。 此字段是可选的,如果不需要 Secret,则此字段可以为空。 如果 Secret 对象包含多个 Secret,则所有 Secret 引用将被传递。

    • csi.readOnly (boolean)

      readOnly 指定供卷使用的只读配置。默认为 false(读/写)。

    • csi.volumeAttributes (map[string]string)

      volumeAttributes 存储传递给 CSI 驱动且特定于驱动的属性。查阅你的驱动文档,了解支持的值。

  • ephemeral (EphemeralVolumeSource)

    ephemeral 表示由一个集群存储驱动处理的卷。此卷的生命周期与定义该卷的 Pod 相关联。 Pod 启动前创建此卷,Pod 移除时删除此卷。

    使用此字段的情形包括: a) 仅在 Pod 运行时才需要此卷, b) 需要从快照恢复或容量跟踪等正常卷的功能特性, c) 通过存储类指定存储驱动,以及 d) 存储驱动支持通过 PersistentVolumeClaim 进行动态卷制备 (有关此卷类型和 PersistentVolumeClaim 之间连接的更多信息,请参考 EphemeralVolumeSource)。

    对于持续时间超过单个 Pod 生命周期的卷,使用 PersistentVolumeClaim 或某种特定于供应商的 API。

    如果打算以这种方式使用 CSI 驱动,则将 CSI 用于轻量级本地临时卷。更多的相关信息,请参考驱动文档。

    一个 Pod 可以同时使用临时卷和持久卷这两种类别的卷。

    表示由一个正常存储驱动处理的临时卷。

    • ephemeral.volumeClaimTemplate (PersistentVolumeClaimTemplate)

      将用于创建独立的 PVC 以制备卷。 嵌入了 EphemeralVolumeSource 的 Pod 将是 PVC 的所有者,即 PVC 将与 Pod 一起删除。 PVC 的名称将是 <pod 名称>-<卷名称>,其中 <卷名称> 是来自 PodSpec.Volumes 数组条目的名称。 如果串联的名称对于 PVC 无效(例如太长),则 Pod 验证将拒绝该 Pod。

      如果具有此名称的现有 PVC 不属于此 Pod,则这一 PVC 将 不会 被用于此 Pod,以避免错误地使用不相关的卷。 如果出现这种情况,Pod 的启动操作会被阻塞直到不相关的 PVC 被移除。 如果 Pod 准备使用这样一个预先创建的 PVC,那么一旦此 Pod 出现,就必须更新 PVC, 将其属主引用指向该 Pod。通常没有必要这样做,但这对手动重构损坏的集群时可能很有用。

      此字段是只读的,PVC 被创建后 Kubernetes 不会对其进行任何更改。

      必需,不能为 nil。

      PersistentVolumeClaimTemplate 用于作为 EphemeralVolumeSource 的一部分生成 PersistentVolumeClaim 对象。

      • ephemeral.volumeClaimTemplate.spec (PersistentVolumeClaimSpec),必需

        PersistentVolumeClaim 的规约。整个规约的内容将被原封不动地复制到从此模板创建的 PVC 中。 与 PersistentVolumeClaim 相同的字段在此处也有效。

      • ephemeral.volumeClaimTemplate.metadata (ObjectMeta)

        可能包含一些标签和注解,在创建 PVC 时,这些数据会被复制到 PVC 中。 在验证期间,其他字段都不允许设置,即便设置也会在验证阶段被拒绝。

  • fc (FCVolumeSource)

    fc 表示挂接到 kubelet 的主机随后暴露给 Pod 的一个 Fibre Channel 资源。

    表示 Fibre Channel 卷。Fibre Channel 卷只能以读/写一次进行挂载。 Fibre Channel 卷支持所有权管理和 SELinux 重新打标签。

    • fc.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。 例如 “ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。

    • fc.lun (int32)

      lun 是可选的:FC 目标 lun 编号。

    • fc.readOnly (boolean)

      readOnly 是可选的。默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

    • fc.targetWWNs ([]string)

      原子:将在合并期间被替换

      targetWWNs 是可选的。FC 目标全球名称(WWN)。

    • fc.wwids ([]string)

      原子:将在合并期间被替换

      wwids 是可选的。FC 卷全球识别号(wwids)。 必须设置 wwids 或 targetWWNs 及 lun 的组合,但不能同时设置两者。

  • flexVolume (FlexVolumeSource)

    flexVolume 表示使用基于 exec 的插件制备/挂接的通用卷资源。

    flexVolume 表示使用基于 exec 的插件制备/挂接的通用卷资源。

    • flexVolume.driver (string),必需

      driver 是供此卷使用的驱动的名称。

    • flexVolume.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。例如 “ext4”、“xfs”、“ntfs”。 默认的文件系统取决于 flexVolume 脚本。

    • flexVolume.options (map[string]string)

      options 是可选的。此字段包含额外的命令选项(如果有)。

    • flexVolume.readOnly (boolean)

      readOnly 是可选的。默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

    • flexVolume.secretRef (LocalObjectReference)

      secretRef 是可选的。secretRef 是对包含敏感信息的 Secret 对象的引用,该 Secret 会被传递到插件脚本。 如果未指定 Secret 对象,则此字段可以为空。如果 Secret 对象包含多个 Secret,则所有 Secret 被传递到插件脚本。

  • flocker (FlockerVolumeSource)

    flocker 表示挂接到一个 kubelet 主机的 Flocker 卷。Flocker 卷依赖于正在运行的 Flocker 控制服务。

    表示 Flocker 代理挂载的 Flocker 卷。应设置一个且仅设置 datasetName 和 datasetUUID 中的一个。 Flocker 卷不支持所有权管理或 SELinux 重新打标签。

    • flocker.datasetName (string)

      datasetName 是存储为元数据的数据集的名称。Flocker 数据集的名称应视为已弃用。

    • flocker.datasetUUID (string)

      datasetUUID 是数据集的 UUID。这是 Flocker 数据集的唯一标识符。

  • iscsi (ISCSIVolumeSource)

    iscsi 表示挂接到 kubelet 的主机随后暴露给 Pod 的一个 ISCSI Disk 资源。更多信息: https://examples.k8s.io/volumes/iscsi/README.md

    表示一个 ISCSI 磁盘。ISCSI 卷只能以读/写一次进行挂载。ISCSI 卷支持所有权管理和 SELinux 重新打标签。

    • iscsi.iqn (string),必需

      iqn 是目标 iSCSI 限定名称。

    • iscsi.lun (int32),必需

      lun 表示 iSCSI 目标逻辑单元号。

    • iscsi.targetPortal (string),必需

      targetPortal 是 iSCSI 目标门户。 如果不是默认端口(通常是 TCP 端口 860 和 3260),则 Portal 为 IP 或 ip_addr:port。

    • iscsi.chapAuthDiscovery (boolean)

      chapAuthDiscovery 定义是否支持 iSCSI Discovery CHAP 身份认证。

    • iscsi.chapAuthSession (boolean)

      chapAuthSession 定义是否支持 iSCSI Session CHAP 身份认证。

    • iscsi.fsType (string)

      fsType 是你要挂载的卷的文件系统类型。提示:确保主机操作系统支持此文件系统类型。 例如:“ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。更多信息: https://kubernetes.io/zh-cn/docs/concepts/storage/volumes#iscsi

    • iscsi.initiatorName (string)

      initiatorName 是自定义的 iSCSI 发起程序名称(iSCSI Initiator Name)。 如果同时用 iscsiInterface 指定 initiatorName,将为连接创建新的 iSCSI 接口 <目标门户>:<卷名称>。

    • iscsi.iscsiInterface (string)

      iscsiInterface 是使用 iSCSI 传输的接口名称。默认为 “default”(tcp)。

    • iscsi.portals ([]string)

      原子:将在合并期间被替换

      portals 是 iSCSI 目标门户列表(iSCSI Target Portal List)。 如果不是默认端口(通常是 TCP 端口 860 和 3260),则 Portal 为 IP 或 ip_addr:port。

    • iscsi.readOnly (boolean)

      此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。默认为 false。

    • iscsi.secretRef (LocalObjectReference)

      secretRef 是 iSCSI 目标和发起程序身份认证所用的 CHAP Secret。

  • image (ImageVolumeSource)

    image 表示一个在 kubelet 的主机上拉取并挂载的 OCI 对象(容器镜像或工件)。 其卷在 Pod 启动时根据提供的 PullPolicy 值进行解析:

    • Always:kubelet 始终尝试拉取此引用。如果拉取失败,容器创建将失败。
    • Never:kubelet 从不拉取此引用,只使用本地镜像或工件。如果引用不存在,容器创建将失败。
    • IfNotPresent:如果磁盘上尚不存在此引用,kubelet 执行拉取操作。若此引用不存在且拉取失败,则容器创建将失败。

    如果 Pod 被删除并重新创建,此卷会被重新解析,这意味着在 Pod 重新创建时将可以访问新的远程内容。 在 Pod 启动期间解析或拉取镜像失败将导致容器无法启动,并可能显著增加延迟。 如果失败,将使用正常的卷回退机制进行重试,并输出 Pod 失败的原因和相关消息。 此卷可以挂载的对象类型由主机上的容器运行时实现负责定义,至少必须包含容器镜像字段所支持的所有有效类型。 OCI 对象将以只读方式被挂载到单个目录(spec.containers[*].volumeMounts.mountPath)中。 在 Linux 上,容器运行时通常还会挂载阻止文件执行(noexec)的卷。 不支持容器使用子路径挂载(spec.containers[*].volumeMounts.subpath)。 spec.securityContext.fsGroupChangePolicy 字段对这种卷没有效果。

    ImageVolumeSource 表示一个镜像卷资源。

    • image.pullPolicy(字符串)

      OCI 对象的拉取策略。可能的值有:

      • Always:kubelet 始终尝试拉取此引用。如果拉取失败,容器创建将失败。
      • Never:kubelet 从不拉取此引用,只使用本地镜像或工件。如果引用不存在,容器创建将失败。
      • IfNotPresent:如果磁盘上尚不存在此引用,kubelet 执行拉取操作。 如果引用不存在且拉取失败,容器创建将失败。 如果指定了 :latest 标签,则默认为 Always,否则默认为 IfNotPresent。
    • image.reference (string)

      必需:要使用的镜像或工件引用。行为与 pod.spec.containers[*].image 相同。 拉取 Secret 的组装方式与容器镜像所用的方式相同, 都是通过查找节点凭据、服务账户(SA)镜像拉取 Secret 和 Pod 规约镜像拉取 Secret。更多信息: https://kubernetes.io/zh-cn/docs/concepts/containers/images 此字段是可选的,以允许更高层次的配置管理在 Deployment 和 StatefulSet 这类工作负载控制器中默认或覆盖容器镜像。

  • photonPersistentDisk (PhotonPersistentDiskVolumeSource)

    photonPersistentDisk 表示 kubelet 主机上挂接和挂载的 PhotonController 持久磁盘。

    表示 Photon Controller 持久磁盘资源。

    • photonPersistentDisk.pdID (string),必需

      pdID 是标识 Photon Controller 持久磁盘的 ID。

    • photonPersistentDisk.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。 例如 “ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。

  • portworxVolume (PortworxVolumeSource)

    portworxVolume 表示 kubelet 主机上挂接和挂载的 portworx 卷。

    PortworxVolumeSource 表示 Portworx 卷资源。

    • portworxVolume.volumeID (string),必需

      volumeID 唯一标识 Portworx 卷。

    • portworxVolume.fsType (string)

      fSType 表示要挂载的文件系统类型。必须是主机操作系统支持的文件系统类型。例如 “ext4”、“xfs”。 如果未指定,则隐式推断为 “ext4”。

    • portworxVolume.readOnly (boolean)

      readOnly 默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

  • quobyte (QuobyteVolumeSource)

    quobyte 表示在共享 Pod 生命周期的主机上挂载的 Quobyte。

    表示在 Pod 的生命周期内持续的 Quobyte 挂载。Quobyte 卷不支持所有权管理或 SELinux 重新打标签。

    • quobyte.registry (string),必需

      registry 表示将一个或多个 Quobyte Registry 服务指定为 host:port 对的字符串形式 (多个条目用英文逗号分隔),用作卷的中央注册表。

    • quobyte.volume (string),必需

      volume 是按名称引用已创建的 Quobyte 卷的字符串。

    • quobyte.group (string)

      group 是将卷访问映射到的组。默认为无组。

    • quobyte.readOnly (boolean)

      此处 readOnly 将强制使用只读权限挂载 Quobyte 卷。默认为 false。

    • quobyte.tenant (string)

      tenant 拥有 Backend Used 中给定的 Quobyte 卷,随动态制备的 Quobyte 卷一起使用,值由插件设置。

    • quobyte.user (string)

      user 是将卷访问映射到的用户。默认为 serivceaccount 用户。

  • scaleIO (ScaleIOVolumeSource)

    scaleIO 表示 Kubernetes 节点上挂接和挂载的 ScaleIO 持久卷。

    ScaleIOVolumeSource 表示一个 ScaleIO 持久卷。

    • scaleIO.gateway (string),必需

      gateway 是 ScaleIO API 网关的主机地址。

    • scaleIO.secretRef (LocalObjectReference),必需

      secretRef 引用到 ScaleIO 用户的 Secret 和其他敏感信息。如果未提供此项,则 Login 操作将失败。

    • scaleIO.system (string),必需

      system 是存储系统的名称,与 ScaleIO 中的配置相同。

    • scaleIO.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。例如 “ext4”、“xfs”、“ntfs”。默认为 “xfs”。

    • scaleIO.protectionDomain (string)

      protectionDomain 是 ScaleIO 保护域(ScaleIO Protection Domain)的名称,用于已配置的存储。

    • scaleIO.readOnly (boolean)

      readOnly 默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

    • scaleIO.sslEnabled (boolean)

      sslEnabled 标志启用/禁用与网关的 SSL 通信,默认为 false。

    • scaleIO.storageMode (string)

      storageMode 指示卷所用的存储应是 ThickProvisioned 或 ThinProvisioned。默认为 ThinProvisioned。

    • scaleIO.storagePool (string)

      storagePool 是与保护域关联的 ScaleIO Storage Pool。

    • scaleIO.volumeName (string)

      volumeName 是在与此卷源关联的 ScaleIO 系统中已创建的卷的名称。

  • storageos (StorageOSVolumeSource)

    storageOS 表示 Kubernetes 节点上挂接和挂载的 StorageOS 卷。

    表示 StorageOS 持久卷资源。

    • storageos.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。 例如 “ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。

    • storageos.readOnly (boolean)

      readOnly 默认为 false(读/写)。此处的 readOnly 将强制设置卷挂载中的 readOnly 属性。

    • storageos.secretRef (LocalObjectReference)

      secretRef 指定用于获取 StorageOS API 凭据的 Secret。如果未指定,则将尝试使用默认值。

    • storageos.volumeName (string)

      volumeName 是 StorageOS 卷的人类可读名称。这些卷名称在一个名字空间内是唯一的。

    • storageos.volumeNamespace (string)

      volumeNamespace 指定 StorageOS 内卷的作用域。如果未指定名字空间,则将使用 Pod 的名字空间。 这个设置使得 Kubernetes 的名字作用域可以在 StorageOS 内进行映射,实现更紧密的集成。 将 volumeName 设为任何名称以重载默认的行为。如果你未在 StorageOS 内使用名字空间,则设为“default”。 将创建 StorageOS 内预先不存在的名字空间。

  • vsphereVolume (VsphereVirtualDiskVolumeSource)

    vsphereVolume 表示 kubelet 主机上挂接和挂载的 vSphere 卷。

    表示 vSphere 卷资源。

    • vsphereVolume.volumePath (string),必需

      volumePath 是标识 vSphere 卷 vmdk 的路径。

    • vsphereVolume.fsType (string)

      fsType 是要挂载的文件系统类型。必须是主机操作系统所支持的文件系统类型之一。 例如 “ext4”、“xfs”、“ntfs”。如果未指定,则隐式推断为 “ext4”。

    • vsphereVolume.storagePolicyID (string)

      storagePolicyID 是与 StoragePolicyName 关联的基于存储策略的管理(SPBM)配置文件 ID。

    • vsphereVolume.storagePolicyName (string)

      storagePolicyName 是基于存储策略的管理(SPBM)配置文件名称。

已弃用

  • gitRepo (GitRepoVolumeSource)

    gitRepo 表示特定修订版本的 git 仓库。(注意:GitRepo 已被弃用。)如果与为某容器提速 Git 仓库, 可以先将 emptyDir 挂载到 InitContainer 上,由后者使用 git 克隆仓库,然后将 emptyDir 挂载到 Pod 的容器中。

    表示用 Git 仓库的内容进行填充的一个卷。Git 仓库卷不支持所有权管理。Git 仓库卷支持 SELinux 重新打标签。 (注意:GitRepo 已被弃用。)如果与为某容器提速 Git 仓库, 可以先将 emptyDir 挂载到 InitContainer 上,由后者使用 git 克隆仓库,然后将 emptyDir 挂载到 Pod 的容器中。

    • gitRepo.repository (string),必需

      repository 是仓库的 URL。

    • gitRepo.directory (string)

      directory 是目标目录的名称。不得包含 “..” 或以 “..” 开头。如果提供了 “.”,则卷目录将是 Git 仓库。 否则,如果指定,卷将用给定名称的子目录中存放 Git 仓库。

    • gitRepo.revision (string)

      revision 是指定修订版本的提交哈希值。

DownwardAPIVolumeFile

DownwardAPIVolumeFile 表示创建包含 Pod 字段的文件的信息。


  • path (string),必需

    必需。path 是要创建的文件的相对路径名称。不得使用绝对路径,也不得包含 “..” 路径。 必须用 UTF-8 进行编码。相对路径的第一项不得用 “..” 开头。

  • fieldRef (ObjectFieldSelector)

    必需。选择 Pod 的字段:仅支持注解、标签、名称、名字空间和 uid。

  • mode (int32)

    可选:模式位用于设置文件的权限,必须是 0000 到 0777 之间的八进制值或 0 到 511 之间的十进制值。 YAML 既接受八进制值也接受十进制值,JSON 针对模式位需要十进制值。 如果未指定,则将使用卷 defaultMode。 这可能与影响文件模式的其他选项(如 fsGroup)有冲突,且结果可以是其他模式位也被设置。

  • resourceFieldRef (ResourceFieldSelector)

    选择容器的资源:目前仅支持资源限制与请求(limits.cpu、limits.memory、requests.cpu 和 requests.memory)。

KeyToPath

将一个字符串键映射到卷中的一个路径。


  • key (string),必需

    key 是要投射的键。

  • path (string),必需

    path 是将键映射到的文件的相对路径。不能是绝对路径。不能包含路径元素 “..”。不能以字符串 “..” 开头。

  • mode (int32)

    mode 是可选的:模式位用于为文件设置权限。必须是 0000 到 0777 之间的八进制值或 0 到 511 之间的十进制值。 YAML 既接受八进制值也接受十进制值,JSON 针对模式位需要十进制值。 如果未指定,则将使用卷 defaultMode。 这可能与影响文件模式的其他选项(如 fsGroup)有冲突,且结果可以是其他模式位也被设置。

最后修改 September 19, 2024 at 2:35 PM PST: [zh] Sync config-and-storage-resources/volume.md (0aceb383e9)