你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器存储预览版排除故障
Azure 容器存储是一项基于云的卷管理、部署和业务流程服务,专为容器原生构建。 使用本文排查 Azure 容器存储的常见问题,并查找问题的解决方法。
安装问题疑难解答
Azure 容器存储安装失败
运行 az aks create
后,可能会看到“Azure 容器存储安装失败。AKS 群集已创建。请运行 az aks update
和 --enable-azure-container-storage
来启用 Azure 容器存储”消息。
此消息表示未安装 Azure 容器存储,但已正确创建你的 AKS 群集。
若要再群集上安装 Azure 容器存储和创建存储池,请运行以下命令。 将 <cluster-name>
和 <resource-group>
替换为自己的值。 将 <storage-pool-type>
替换为 azureDisk
、ephemeraldisk
或 elasticSan
。
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>
无法将存储池类型设置为 NVMe
如果尝试使用临时磁盘安装 Azure 容器存储,特别是虚拟机 (VM) SKU 没有 NVMe 驱动器的群集上的本地 NVMe,你会收到以下错误消息:无法将 --storage-pool-option 设置为 NVMe,因为节点池均不支持临时 NVMe 磁盘。
若要修正,请使用具有 NVMe 驱动器的 VM SKU 创建节点池,然后重试。 请参阅存储优化 VM。
排查存储池问题
若要检查存储池的状态,请运行 kubectl describe sp <storage-pool-name> -n acstor
。 下面是可能会遇到的一些问题。
弹性 SAN 创建失败
如果尝试创建弹性 SAN 存储池,可能会看到“Azure 弹性 SAN 创建失败: 已创建的订阅的最大弹性 SAN 数”消息。 这意味着,你已达到每个订阅可在一个区域中部署的弹性 SAN 资源数限制。 可在此处查看限制:弹性 SAN 可伸缩性和性能目标。 请考虑删除不再使用的订阅上的所有现有弹性 SAN 资源,或者尝试在其他区域中创建存储池。
找不到块设备
如果看到此消息,则表示你可能尝试在 VM SKU 没有 NVMe 驱动器的群集上创建临时磁盘存储池。
若要修正,请使用具有 NVMe 驱动器的 VM SKU 创建节点池,然后重试。 请参阅存储优化 VM。
已启用存储池类型
如果尝试启用已启用的存储池类型,将收到“--enable-azure-container-storage
值无效。已在群集中为存储池类型 <storage-pool-type>
启用 Azure 容器存储”消息。 可运行 kubectl get sp -n acstor
来检查现在是否已经创建了任何存储池。
禁用存储池类型
通过 az aks update --disable-azure-container-storage <storage-pool-type>
禁用存储池类型或通过 az aks update --disable-azure-container-storage all
卸载 Azure 容器存储时,如果现在有该类型的存储池,你会收到以下消息:
如果禁用存储池类型 <storage-pool-type>
的 Azure 容器存储,将强制删除同一类型的所有存储池,并对使用这些存储池的应用程序产生影响。 强制删除存储池还可能导致正在使用的存储资源泄漏。 是否要在禁用 Azure 容器存储之前验证是否使用了 <storage-pool-type>
类型的存储池? (是/否)
如果选择“是”,则运行自动验证来确保没有从存储池创建的永久性卷。 如果选择“否”,会绕过此验证并禁用存储池类型,从而删除任何现有存储池并可能影响应用程序。
无法删除包含 AKS 群集的资源组
如果创建了弹性 SAN 存储池,可能无法删除 AKS 群集所在的资源组。
为了解决此问题,请登录到 Azure 门户,然后选择“资源组”。 找到 AKS 创建的资源组(资源组名称以 MC_ 开头)。 选择该资源组中的 SAN 资源对象。 手动删除所有卷和卷组。 然后重试删除包含 AKS 群集的资源组。
排查永久性卷的问题
无法从临时磁盘存储池创建永久性卷
由于临时磁盘(本地 NVMe 和临时 SSD)是临时性的而不是持久性的,因此我们强制使用 Kubernetes 通用临时卷。 如果你尝试使用临时磁盘池创建永久性卷声明,你将看到以下错误:服务器出错(禁止):创建“eph-pvc.yaml”时出错:许可 webhook“pvc.acstor.azure.com”拒绝了请求:未复制的 ephemeralDisk 存储池中只允许通用临时卷。
如果需要永久性卷(该卷的生命周期独立于使用该卷的任何单个 Pod),则 Azure 容器存储支持 NVMe 复制。 可以通过复制创建存储池,并从中创建永久性卷。 有关指导,请参阅通过卷复制创建存储池。 请注意,由于临时磁盘存储池会占用所有可用的 NVMe 磁盘,因此必须先删除任何现有的临时磁盘存储池,然后再创建启用了复制的新存储池。 如果不需要持久性,则可以创建通用临时卷。
由于临时卷大小超出可用容量,Pod 创建处于挂起状态
在单个节点上分配临时卷。 为 Pod 配置临时卷的大小时,大小应小于单个节点临时磁盘的可用容量。 否则,Pod 创建将处于挂起状态。
使用以下命令检查 Pod 创建是否处于挂起状态。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
fiopod 0/1 Pending 0 17s
在此示例中,pod fiopod
处于“Pending
”状态。
使用以下命令检查 Pod 是否具有关于创建 persistentvolumeclaim 的警告事件。
$ kubectl describe pod fiopod
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 40s default-scheduler 0/3 nodes are available: waiting for ephemeral volume controller to create the persistentvolumeclaim "fiopod-ephemeralvolume". preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling..
在此示例中,Pod 显示有关创建永久性卷声明 fiopod-ephemeralvolume
的警告事件。
使用以下命令检查永久性卷声明是否由于容量不足而无法预配。
$ kubectl describe pvc fiopod-ephemeralvolume
...
Warning ProvisioningFailed 107s (x13 over 20m) containerstorage.csi.azure.com_aks-nodepool1-29463073-vmss000000_7f5bd88d-be76-40d2-a59e-e51ce000e35e failed to provision volume with StorageClass "acstor-ephemeraldisk-temp": rpc error: code = Internal desc = Operation failed: GenericOperation("error in response: status code '507 Insufficient Storage', content: 'RestJsonError { details: \"Operation failed due to insufficient resources: Not enough suitable pools available, 0/1\", message: \"SvcError :: NotEnoughResources\", kind: ResourceExhausted }'")
在此示例中,Insufficient Storage
显示为卷配置失败的原因。
运行以下命令,检查单个节点临时磁盘的可用容量。
$ kubectl get diskpool -n acstor
NAME CAPACITY AVAILABLE USED RESERVED READY AGE
ephemeraldisk-temp-diskpool-jaxwb 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-temp-diskpool-wzixx 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-temp-diskpool-xbtlj 75660001280 75031990272 628011008 560902144 True 21h
在此示例中,单个节点临时磁盘的可用容量为 75031990272
字节或 69 GiB。
将卷存储大小调整到可用容量以下,然后重新部署Pod。 请参阅使用通用临时卷部署 Pod。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈