我在区域 1 和 2 中有一个虚拟机,在区域 1 中有一个磁盘,但是当我运行脚本时,它失败并显示以下消息:
AttachVolume.Attach failed for volume "disk-name" : rpc error: code = Unknown desc =
Attach volume /subscriptions/subscription-id/resourceGroups/xxxxx_westeurope/providers/Microsoft.Compute/disks/disk-name to instance virtual-machine-name failed with Retriable: false, RetryAfter: 0s, HTTPStatusCode: 400,
RawError: {
"error": {
"code": "BadRequest",
"message": "Disk /subscriptions/subscription-id/resourceGroups/xxxxx_westeurope/providers/Microsoft.Compute/disks/disk-name cannot be attached to the VM because it is not in the same zone as the VM. VM zone: '2'. Disk zone: '1'."
}
}
我现在已经尝试了所有方法,但还是不知道如何解决这个问题。在多个区域中运行的机器和在单个区域中运行的磁盘是否存在问题?
[编辑]
之前一直都正常,现在就失败了。前几天我通过将 k8s 部署的规模设置为 0 并重新启动解决了同样的问题,但现在不起作用了
答案1
LRS 磁盘没有区域冗余,需要与它们所连接的 VM 位于同一区域中。ZRS 磁盘应按照 AKS 文档工作:
Azure 磁盘可用性区域支持
使用 Azure 托管 LRS 磁盘的卷不是区域冗余资源,这些卷无法跨区域附加,并且必须与托管目标 pod 的给定节点位于同一区域中。使用 Azure 托管 ZRS 磁盘(由 Azure Disk CSI 驱动程序 v1.5.0+ 支持)的卷是区域冗余资源,这些卷可以在所有区域和非区域代理节点上进行调度。
自 1.12 版起,Kubernetes 便了解 Azure 可用区域。您可以在多区域 AKS 群集中部署引用 Azure 托管磁盘的 PersistentVolumeClaim 对象,Kubernetes 将负责在正确的可用区域中调度任何声明此 PVC 的 pod。