Argo Workflows 中的 AzureDiskVolumeSource:在 Workflow 中挂载 Azure 数据盘的字段详解与使用指南
2026/9/23 2:35:27 网站建设 项目流程

Argo Workflows 中的 AzureDiskVolumeSource:在 Workflow 中挂载 Azure 数据盘的字段详解与使用指南

【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址: https://gitcode.com/gh_mirrors/ar/argo-workflows

本篇指南围绕 Argo Workflows 的卷(Volume)配置体系中的azureDisk字段展开,详细解析AzureDiskVolumeSource这一源自 Kubernetes core/v1 API 的数据结构在 Workflow 定义中的全部字段、默认值与约束。读完本文,你将能够在 Argo Workflows 的 Workflow 清单中正确声明 Azure 数据盘卷、理解各字段的语义与隐式默认值,并掌握该字段在 Kubernetes 生态中已进入弃用状态后的迁移方向。

AzureDiskVolumeSource 在 Argo Workflows 中的定位

Argo Workflows 的 Workflow 清单允许为任务 Pod 声明任意 Kubernetes 卷。其中spec.volumes[].azureDisk字段对应的就是AzureDiskVolumeSource类型,其官方语义为:

AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.

也就是说,它描述的是"将一块 Azure 数据盘挂载到宿主机,再以 bind mount 方式绑定到 Pod"的卷来源。该字段直接引用了 Kubernetes 核心 v1 类型io.k8s.api.core.v1.AzureDiskVolumeSource,这一点可以在仓库的 JSON Schema 定义 中确认:azureDisk字段以$ref指向#/definitions/io.k8s.api.core.v1.AzureDiskVolumeSource

该类型在 Argo Workflows 中出现在多个环节:

  • Workflow / WorkflowTemplate / ClusterWorkflowTemplate / CronWorkflowspec.volumes中,用于为任务 Pod 声明卷;
  • 字段参考文档docs/fields.md 中,azureDisk被列为AzureDiskVolumeSource类型;
  • executor swagger 文档docs/executor_swagger.md 中同样收录了该结构体及其属性表。

字段完整参考表

AzureDiskVolumeSource共包含 6 个字段,其中diskNamediskURI为必填项,其余均为可选。以下表格完整覆盖原文档内容,并补充了默认值与必需性标注(默认值与必需项依据仓库中的 CRD 定义确认):

字段名类型是否必填默认值描述
cachingModeString可选无(由 Azure 平台决定)主机缓存(Host Caching)模式:NoneRead OnlyRead Write
diskNameString必填数据盘在 Blob 存储中的名称(Name of the data disk in the blob storage)。
diskURIString必填数据盘在 Blob 存储中的 URI(URI of data disk in the blob storage)。
fsTypeString可选ext4挂载使用的文件系统类型,必须是宿主机操作系统支持的类型,例如ext4xfsntfs;未指定时隐式推断为ext4
kindString可选shared磁盘类型,可选值为Shared(每个存储账户多个 blob 磁盘)、Dedicated(每个存储账户单个 blob 磁盘)、Managed(Azure 托管数据盘,仅用于托管可用性集)。
readOnlyBoolean可选false是否只读挂载,默认false(读写);置为true时会强制 VolumeMount 中的 ReadOnly 设置。

说明:以上"必填/默认值"信息在原文档中仅以[optional]标注,仓库中的 CRD 定义则进一步明确:diskNamediskURI被列入required列表,fsType默认ext4readOnly默认false,详见 argoproj.io_workflows.yaml 中的azureDisk属性定义。

逐字段语义详解

cachingMode:主机缓存模式

cachingMode控制宿主机对磁盘 I/O 的缓存策略,可选值严格限定为三种:None(不缓存)、Read Only(只读缓存)、Read Write(读写缓存)。该字段对应 Kubernetes 中AzureDataDiskCachingMode枚举类型(见 docs/executor_swagger.md 中的类型标注)。对于写入频繁或对数据一致性要求高的场景,应谨慎选择缓存模式。

diskName 与 diskURI:必填的磁盘标识

  • diskName:数据盘在 Azure Blob 存储中的名称,用于标识具体的 VHD 文件;
  • diskURI:该数据盘在 Blob 存储中的完整 URI,即 VHD 的访问地址。

两者共同唯一确定一块磁盘,是声明azureDisk卷时必须同时提供的两个字段,缺少任何一个都会导致卷定义校验失败。

fsType:文件系统类型

fsType指定挂载到容器中的文件系统类型,取值必须被宿主机操作系统支持,常见如ext4xfsntfs当该字段缺省时,系统会隐式推断为ext4——这一默认行为同时出现在 CRD 的default: ext4声明与字段描述中。

kind:磁盘类型

kind的合法值及含义如下:

取值含义
Shared每个存储账户包含多个 blob 磁盘
Dedicated每个存储账户仅包含单个 blob 磁盘
ManagedAzure 托管数据盘(仅适用于托管可用性集)

默认值为shared,即未显式声明时按Shared处理。注意文档描述中该默认值为小写shared,而合法取值枚举为大写形式,实际使用时应参考 Kubernetes 对该枚举的解析规则,建议显式使用枚举值以避免歧义。

readOnly:只读挂载

readOnly默认false,表示以读写方式挂载。当设置为true时,会强制将对应的volumeMounts视为只读——即该字段会覆盖并强制VolumeMount中的只读设置,即使 mount 声明为读写也无效。

在 Workflow 中声明 azureDisk 卷

在 Argo Workflows 中,azureDisk卷与其他卷类型一样声明在spec.volumes下,并通过任务模板的volumeMounts挂载到容器。以下是一个完整的 Workflow 示例(基于上述字段语义构造的示意清单,展示全部字段的用法):

apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: azure-disk-example- spec: entrypoint: main volumes: - name: azure-data azureDisk: diskName: mydata.vhd diskURI: "https://<storage-account>.blob.core.windows.net/vhds/mydata.vhd" cachingMode: Read Only fsType: ext4 kind: Managed readOnly: true templates: - name: main container: image: alpine:3.20 command: [sh, -c, "ls /data && sleep 3600"] volumeMounts: - name: azure-data mountPath: /data

该清单中azureDisk段的字段与上文表格一一对应:diskNamediskURI必填,cachingModefsTypekindreadOnly均为可选且带有各自的默认行为。

关于卷的更多通用用法(如其他卷类型、emptyDir、PVC 等),可参阅 docs/fields.md 中volumes一节,该文档对 Argo Workflows 支持的全部卷来源类型做了逐字段索引。

重要提示:in-tree azureDisk 已弃用

在声明与使用azureDisk卷之前,需要特别留意仓库文档与 CRD 中反复出现的弃用声明。CRD 中azureDisk的官方描述为:

Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com CSI driver.

即 Kubernetes 内置(in-tree)的azureDisk卷类型已进入弃用状态,其全部操作已被重定向至disk.csi.azure.comCSI 驱动。这一弃用声明同时存在于 docs/fields.md、api/jsonschema/schema.json 以及各 CRD 清单(如 argoproj.io_workflows.yaml)中,因此:

  • 存量清单:已在使用的azureDisk卷仍可继续工作,但不应再作为新工作负载的默认选择;
  • 新建工作负载:建议迁移到基于disk.csi.azure.com的 CSI 卷声明,通过存储类(StorageClass)动态或静态供给 Azure 磁盘,以获得长期支持与更完整的存储能力。

相关资源索引

如需进一步深入,可在当前仓库中查看以下资源:

  • 字段参考文档(AzureDiskVolumeSource 章节):azureDisk字段与类型的一站式索引;
  • CRD 定义(azureDisk 属性段):diskName/diskURI必填约束与fsType/readOnly默认值的权威来源;
  • JSON Schema 定义:azureDisk与 Kubernetes core/v1 类型的$ref对应关系;
  • executor swagger 文档(AzureDiskVolumeSource 章节):含 Go 类型映射与可选字段默认值说明。

【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址: https://gitcode.com/gh_mirrors/ar/argo-workflows

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询