Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
容器存储接口 (CSI) 是一种用于在 Kubernetes 上的容器化工作负载中公开各种块存储和文件存储系统的标准。 使用 CSI 时,Azure Kubernetes 服务 (AKS)可以编写、部署和循环访问插件,以公开 Kubernetes 中的新存储系统或改进现有存储系统,而无需触摸核心 Kubernetes 代码并等待其发布周期。
在 AKS 上,CSI 存储驱动程序的支持使您能够本地化使用 Azure 磁盘、Azure 文件 或 Azure Blob 存储,作为在 AKS 上运行的应用程序的持久存储。
小窍门
如果需要完全托管的解决方案来对数据进行块级访问,请考虑使用 [Azure 容器存储][azure-container-storage] 而不是 CSI 驱动程序。 Azure容器存储与 Kubernetes 集成,以便可以为 Kubernetes 群集上的有状态应用程序动态预配永久性卷。
重要
从 Kubernetes 版本 1.26 开始,内置的永久性卷类型 kubernetes.io/azure-disk 和 kubernetes.io/azure-file 被弃用,将不再受支持。
树内驱动程序 是指存储驱动程序,这些驱动程序是与 CSI 驱动程序(即插件)相反的核心 Kubernetes 代码的一部分。
不计划在弃用后删除这些驱动程序,但应迁移到相应的 CSI 驱动程序 disk.csi.azure.com 和 file.csi.azure.com。 若要查看存储类的迁移选项并升级群集以使用 Azure 磁盘和 Azure 文件存储 CSI 驱动程序,请参阅从内置驱动程序迁移到CSI驱动程序。
如果创建了树内驱动程序存储类,则这些存储类将继续工作,因为 CSI 迁移在将群集升级到 1.21.x 后处于打开状态。 如果要使用 CSI 功能,则需要执行迁移。
关于 Azure Disks CSI 驱动程序
Azure磁盘 CSI 驱动程序是 AKS 用来管理Azure磁盘资源的生命周期的 CSI 规范兼容驱动程序。 使用 Azure 磁盘 CSI 驱动程序,可以创建 Kubernetes DataDisk 资源。 磁盘可以使用Azure 高级存储(由高性能 SSD 提供支持)或Azure标准存储(由常规 HDD 或标准 SSD 提供支持)。 对于大多数生产和开发工作负荷,请使用高级存储。 Azure 磁盘被挂载为 ReadWriteOnce,并且只能被 AKS 中的单个节点使用。 对于可同时由多个节点访问的存储卷,请使用Azure 文件存储。
Azure 磁盘 CSI 驱动程序的功能
除了树状驱动程序功能之外,Azure磁盘 CSI 驱动程序还支持以下功能:
- 对并发磁盘附加和分离操作期间的性能进行了改进。
- 树中驱动程序以串行方式附加或分离磁盘,而 CSI 驱动程序分批附加或分离磁盘。 当多个磁盘连接到一个节点时,性能会显著改善。
- 高级 SSD v1 和 v2。
-
PremiumV2_LRS仅支持None缓存模式。
-
- 区域冗余存储(ZRS)磁盘支持。
-
Premium_ZRS,StandardSSD_ZRS支持磁盘类型。 ZRS 磁盘可以调度到区域节点或非区域节点上,没有磁盘卷需要与给定节点在同一区域的限制。 如需获取更多信息,包括支持哪些区域,请参阅 托管磁盘的区域冗余存储。
-
- 创建 永久性卷的快照。
- 创建 卷克隆。
- 在不停机的情况下调整永久性卷的大小。
注意
根据所使用的虚拟机(VM)SKU,Azure 磁盘 CSI 驱动程序可能会有每个节点的卷限制。 对于一些功能强大的 VM(例如 16 个核心),每个节点的限制为 64 个卷。 若要确定每个 VM SKU 的限制,请查看所提供的每个 VM SKU 的“最大数据磁盘数”列。 有关提供的 VM SKU 及其相应的详细容量限制的列表,请参阅常规用途虚拟机大小。
关于 Azure 文件存储 CSI 驱动程序
Azure 文件存储 CSI 驱动程序是 AKS 用来管理Azure文件共享生命周期的 CSI 规范兼容驱动程序。 使用 Azure 文件存储 CSI 驱动程序,可以将由 Azure 存储帐户支持的 SMB 3.0/3.1 共享挂载到 Pods。 使用Azure 文件存储,可以跨多个节点和 Pod 共享数据。 Azure 文件存储可以使用由常规 HDD 支持的Azure标准存储,也可以使用由高性能 SSD 支持的Azure高级存储。
关于 Azure Blob 存储 CSI 驱动程序
Azure Blob 存储 CSI 驱动程序是 AKS 用来管理 Azure Blob 存储生命周期的 CSI 规范兼容驱动程序。 使用 Azure Blob 存储 CSI 驱动程序,可以将 blob 存储(或对象存储)作为文件系统装载到容器或 Pod 中。 使用 Blob 存储,群集支持使用大型非结构化数据集的应用程序,例如日志文件数据、图像或文档、HPC 等。 此外,如果将数据引入 Azure Data Lake 存储,则可以在 AKS 中直接装载和使用它,而无需配置另一个临时文件系统。
将 Azure Blob 存储作为文件系统装载到容器或 Pod 中时,它使你可以将 Blob 存储用于处理大量非结构化数据的多个应用程序,例如:
- 日志文件数据
- 图像、文档和流式传输视频或音频
- 灾难恢复数据
应用程序可以使用 BlobFuse 或网络文件系统 (NFS) 3.0 协议访问对象存储上的数据。 在引入 Azure Blob 存储 CSI 驱动程序之前,唯一的选择是手动安装不受支持的驱动程序,以便从 AKS 上运行的应用程序访问 Blob 存储。
Azure Blob 存储 CSI 驱动程序的功能
- 两个内置存储类: azureblob-fuse-premium_ 和 azureblob-nfs-premium。
- BlobFuse 和网络文件系统 (NFS) 版本 3.0 协议。
先决条件
- 需要安装并配置Azure CLI版本 2.42 或更高版本。 使用
az --version命令查找版本。 若要安装或升级,请参阅 Install Azure CLI。 - 如果在群集上安装开源 CSI 存储驱动程序,请在启用Azure存储 CSI 驱动程序之前将其卸载。
如果以前安装了 CSI Blob 存储开源驱动程序,请遵循 此处 的步骤访问 Azure Blob 存储。
注意
如果在安装开源驱动程序期间未启用 blobfuse-proxy,则开源驱动程序的卸载会中断现有的 blobfuse 装载。 但是,NFS 装载仍然不受影响。
- 若要为 AKS 强制执行 Azure Policy 的 策略定义Kubernetes 群集应使用容器存储接口(CSI)驱动程序
StorageClass,需要在群集上启用 Azure Policy 插件。 若要在现有群集上启用,请参阅适用于 Kubernetes 的 Learn Azure Policy。
在现有 AKS 群集上启用Azure磁盘 CSI 存储驱动程序
使用带
az aks update参数的 [--enable-disk-driver][az-aks-update] 命令在现有群集上启用Azure磁盘 CSI 驱动程序。 以下示例在资源组myResourceGroup1 中名为 myAKSCluster 的现有群集上启用Azure磁盘 CSI 驱动程序:注意
可以与 Azure 磁盘 CSI 驱动程序一起启用 快照控制器,从而创建持久卷的快照。 若要启用快照控制器,请在
--enable-snapshot-controller命令中包含参数。az aks update --name myAKSCluster --resource-group myResourceGroup --enable-disk-driver启用Azure磁盘 CSI 驱动程序需要几分钟时间。 命令完成后,可以通过检查输出中
blobCsiDriver是否设置为true来验证驱动程序是否已启用。 例如:"storageProfile": { "blobCsiDriver": { "enabled": true },
在现有 AKS 群集上启用 Azure 文件存储 CSI 存储驱动程序
使用带有
az aks update参数的 [--enable-file-driver][az-aks-update] 命令在现有群集上启用 Azure 文件存储 CSI 驱动程序。 以下示例在资源组myResourceGroup1 中名为 myAKSCluster 的现有群集上启用 Azure 文件存储 CSI 驱动程序:注意
可以与 Azure 文件存储 CSI 驱动程序同时启用 快照控制器,这样您就可以创建持久卷的快照。 若要启用快照控制器,请在
--enable-snapshot-controller命令中包含参数。az aks update --name myAKSCluster --resource-group myResourceGroup --enable-file-driver启用 Azure 文件存储 CSI 驱动程序需要几分钟时间。 命令完成后,可以通过检查输出中
fileCsiDriver是否设置为true来验证驱动程序是否已启用。 例如:"storageProfile": { "fileCsiDriver": { "enabled": true },
在现有 AKS 群集上启用 Azure Blob 存储 CSI 存储驱动程序
使用带有
az aks update参数的 [--enable-blob-driver][az-aks-update] 命令在现有群集上启用 Azure Blob 存储 CSI 驱动程序。 以下示例在资源组myResourceGroup1 中名为 myAKSCluster 的现有群集上启用 Azure Blob 存储 CSI 驱动程序:注意
可以在启用 Azure Blob 存储 CSI 驱动程序的同时启用 快照控制器,从而创建持久卷的快照。 若要启用快照控制器,请在
--enable-snapshot-controller命令中包含参数。az aks update --name myAKSCluster --resource-group myResourceGroup --enable-blob-driver启用 Azure Blob 存储 CSI 驱动程序需要几分钟时间。 命令完成后,可以通过检查输出中
blobCsiDriver是否设置为true来验证驱动程序是否已启用。 例如:"storageProfile": { "blobCsiDriver": { "enabled": true },
在现有 AKS 群集上禁用Azure磁盘 CSI 存储驱动程序
使用带有
az aks update参数的 [--disable-disk-driver][az-aks-update] 命令在现有群集上禁用Azure磁盘 CSI 驱动程序。 以下示例在资源组myResourceGroup1 中禁用名为 myAKSCluster 的现有群集上的Azure磁盘 CSI 驱动程序:注意
可以通过在命令中包含参数来禁用快照控制器
--disable-snapshot-controller。az aks update --name myAKSCluster --resource-group myResourceGroup --disable-disk-driver
在现有 AKS 群集上禁用 Azure 文件存储 CSI 存储驱动程序
使用带有
az aks update参数的 [--disable-file-driver][az-aks-update] 命令在现有群集上禁用 Azure 文件存储 CSI 驱动程序。 以下示例在资源组myResourceGroup1 中禁用名为 myAKSCluster 的现有群集上的 Azure 文件存储 CSI 驱动程序:注意
可以通过在命令中包含参数来禁用快照控制器
--disable-snapshot-controller。az aks update --name myAKSCluster --resource-group myResourceGroup --disable-file-driver
在现有 AKS 群集上禁用 Azure Blob 存储 CSI 存储驱动程序
使用具有
az aks update参数的 [--disable-blob-driver][az-aks-update] 命令在现有群集上禁用 Azure Blob 存储 CSI 驱动程序。 以下示例在资源组myResourceGroup1 中名为 myAKSCluster 的现有群集上禁用 Azure Blob 存储 CSI 驱动程序:注意
可以通过在命令中包含参数来禁用快照控制器
--disable-snapshot-controller。az aks update --name myAKSCluster --resource-group myResourceGroup --disable-blob-driver
注意
删除 CSI 卷时,建议删除相应的 PersistentVolumeClaim 对象,而不是 PersistentVolume 对象。 CSI 驱动程序中的外部预配程序对删除 PersistentVolumeClaim 做出反应。 根据 PVC 回收策略,配置程序对 CSI 卷驱动程序命令发出 DeleteVolume 调用以删除卷。 然后删除 PersistentVolume 对象。
后续步骤
创建并使用 Azure Kubernetes 服务 (AKS) 中的持久性卷 (PV) 和 Azure 磁盘