你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Kubernetes 服务 (AKS) 中启用容器存储接口 (CSI) 驱动程序
容器存储接口 (CSI) 是有关在 Kubernetes 上的容器化工作负载中公开任意块和文件存储系统的一套标准。 Azure Kubernetes 服务 (AKS) 可以采用 CSI 来编写、部署和迭代插件,以在 Kubernetes 中公开新的或改进现有的存储系统,而无需改动核心 Kubernetes 代码并等待经历代码发布周期。
借助 AKS 中的 CSI 存储驱动程序支持,可在本地使用以下功能:
- Azure 磁盘可用来创建 Kubernetes DataDisk 资源。 Azure 磁盘可以使用由高性能 SSD 支持的 Azure 高级存储,也可以使用由普通 HDD 或标准 SSD 支持的 Azure 标准存储。 对于大部分生产和开发工作负载,请使用高级存储。 Azure 磁盘以 ReadWriteOnce 的形式装载,因此仅可用于 AKS 中的一个节点。 对于可以同时由多个节点访问的存储卷,请使用 Azure 文件。
- Azure 文件存储可用于将 Microsoft Azure 存储账户支持的 SMB 3.0/3.1 共享装载到 Pod。 使用 Azure 文件存储可在多个节点和 Pod 之间共享数据。 Azure 文件存储可以使用由普通 HDD 支持的 Azure 标准存储,也可以使用由高性能 SSD 支持的 Azure 高级存储。
- Azure Blob 存储可用于将 Blob 存储(或对象存储)作为文件系统装载到容器或 Pod 中。 借助 Blob 存储,群集可支持使用大型非结构化数据集(例如日志文件数据、图像或文档、HPC 等)的应用程序。 此外,如果将数据引入 Azure Data Lake 存储,则可以直接在 AKS 中装载并使用它,而无需配置另一个临时文件系统。
提示
如果需要完全托管的解决方案来对数据进行块级访问,请考虑使用 Azure 容器存储,而不是 CSI 驱动程序。 Azure 容器存储与 Kubernetes 集成,支持动态和自动预配永久性卷。 Azure 容器存储支持将 Azure 磁盘、临时磁盘和 Azure 弹性 SAN(预览版)作为备份存储,为 Kubernetes 群集上运行的有状态应用程序提供了灵活性和可伸缩性。
先决条件
- 需要安装和配置 Azure CLI 2.42 或更高版本。 运行
az --version
即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。 - 如果你的集群上安装了开源 CSI 存储驱动程序,请在启用 Azure 存储 CSI 驱动程序之前将其卸载。
- 若要针对 AKS 策略定义强制实施 Azure Policy,Kubernetes 群集应使用容器存储接口 (CSI) 驱动程序 StorageClass,需要在新的群集和现有群集上启用 Azure Policy 加载项。 对于现有群集,请参阅了解适用于 Kubernetes 的 Azure Policy 以启用它。
磁盘加密支持的方案
CSI 存储驱动程序支持以下方案:
- 采用客户管理密钥加密的托管磁盘使用在其他 Microsoft Entra 租户中存储的 Azure Key Vault。
- 使用客户管理的密钥加密托管 AKS OS 和应用程序数据的 Azure 存储磁盘。
在已有群集上启用 CSI 存储驱动程序
若要在新群集上启用 CSI 存储驱动程序,请根据存储系统包括以下参数之一:
- 使用
--enable-disk-driver
,你可以启用 Azure 磁盘 CSI 驱动程序。 - 借助
--enable-file-driver
,你可以启用 Azure 文件存储 CSI 驱动程序。 - 使用
--enable-blob-driver
,你可以启用 Azure Blob 存储 CSI 驱动程序。 --enable-snapshot-controller
允许启用 snapshot controller。
az aks update --name myAKSCluster --resource-group myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller
可能需要几分钟时间才能完成此操作。 完成后,你应会在输出中看到在群集上所启用驱动程序的状态。 以下示例呈现了启用 Blob 存储 CSI 驱动程序时用于指明结果的部分:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
在新群集或现有群集上禁用 CSI 存储驱动程序
若要在新群集上禁用 CSI 存储驱动程序,请根据存储系统包括以下参数之一:
- 借助
--disable-disk-driver
,你可以禁用 Azure 磁盘 CSI 驱动程序。 - 借助
--disable-file-driver
,你可以禁用 Azure 文件存储 CSI 驱动程序。 - 使用
--disable-blob-driver
,你可以禁用 Azure Blob 存储 CSI 驱动程序。 --disable-snapshot-controller
允许禁用 snapshot controller。
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller \
--generate-ssh-keys
若要在现有群集上禁用 CSI 存储驱动程序,请使用前面列出的参数之一,具体取决于存储系统:
az aks update \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller
注意
删除 CSI 卷时,建议删除相应的 PersistentVolumeClaim 对象,而不是 PersistentVolume 对象。 CSI 驱动程序中的外部预配程序将对删除 PersistentVolumeClaim 做出响应,并根据其回收策略,针对 CSI 卷驱动程序命令发出 DeleteVolume 调用来删除卷。 然后删除 PersistentVolume 对象。
将自定义的树内存储类迁移到 CSI
从 Kubernetes 版本 1.26 开始,树内永久性卷类型 kubernetes.io/azure-disk 和 kubernetes.io/azure-file 被弃用,不再受支持。 “树中驱动程序”是指包含在核心 Kubernetes 代码中的存储驱动程序,而不是 CSI 驱动程序(插件)。
虽然尚未计划在弃用这些驱动程序后移除它们,但你应迁移到相应的 CSI 驱动程序 disk.csi.azure.com 和 file.csi.azure.com。 若要查看你的存储类的迁移选项,并升级群集以使用 Azure 磁盘和 Azure 文件存储 CSI 驱动程序,请参阅从树内驱动程序迁移到 CSI 驱动程序。
如果已创建树内驱动程序存储类,则这些存储类将继续工作,因为 CSI 迁移是在将群集升级到 1.21.x 后启用的。 如果要使用 CSI 功能,则需要执行迁移。
后续步骤
- 若要将 CSI 驱动器用于 Azure 磁盘,请参阅通过 CSI 驱动程序使用 Azure 磁盘。
- 若要将 CSI 驱动器用于 Azure 文件存储,请参阅通过 CSI 驱动程序使用 Azure 文件存储。
- 若要将 CSI 驱动程序用于 Azure Blob 存储,请参阅将 Azure Blob 存储与 CSI 驱动程序配合使用
- 有关存储最佳做法的详细信息,请参阅有关 Azure Kubernetes 服务中存储和备份的最佳做法。
- 有关 CSI 迁移的详细信息,请参阅从 Kubernetes 树内卷迁移到 CSI 卷。