You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BlobFuse将ZRS Azure存储账户作为AKS PVC时的可用性问题排查

AKS中BlobFuse挂载ZRS存储账户的可用性问题

用户问题

我已手动创建了一个采用ZRS的Blob存储账户,随后在AKS中创建了PV和PVC,通过BlobFuse关联该存储账户。但目前AKS集群出现了如下错误:
AKS存储挂载拓扑不匹配错误
请问此处是否存在可用性问题?即挂载该PVC的Pod是否被隔离至单个可用区?若是,合适的补救措施是什么?

现有PV清单

apiVersion: v1
kind: PersistentVolume
metadata:
  annotations:
    pv.kubernetes.io/bound-by-controller: "yes"
  finalizers:
  - kubernetes.io/pv-protection
  name: XXXX
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 1Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: XXXX
    namespace: XXXX
  csi:
    driver: blob.csi.azure.com
    nodeStageSecretRef:
      name: XXXX
      namespace: XXXX
    volumeAttributes:
      containerName: XXXX
      protocol: fuse
      resourceGroup: XXXX
      storageAccount: XXXX
    volumeHandle: XXXX
  mountOptions:
  - --file-cache-timeout-in-seconds=120
  - -o allow_other
  - --use-adls=true
  persistentVolumeReclaimPolicy: Retain
  storageClassName: azureblob-fuse-premium
  volumeMode: Filesystem

现有PVC清单

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
  finalizers:
  - kubernetes.io/pvc-protection
  name: XXXX
  namespace: XX
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: azureblob-fuse-premium
  volumeMode: Filesystem
  volumeName: XXXX
status:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 1Gi
  phase: Bound

问题分析与解决方案

问题结论

是的,存在可用性限制:挂载该PVC的Pod会被强制隔离到单个可用区,无法跨区调度。错误提示Topology mismatch: the volume's topology does not match the pod's topology表明,手动创建的PV未配置ZRS存储的多可用区拓扑信息,导致CSI驱动将PV绑定到了存储账户的初始可用区,限制了Pod的调度范围。

补救措施

  • 重新配置PV的拓扑属性:删除现有PV(需先解绑PVC),在PV的spec.csi.volumeAttributes中添加storageAccountZone字段,指定ZRS存储覆盖的所有可用区(例如eastus-1,eastus-2,eastus-3,需匹配你的存储账户实际可用区)。修改后的关键片段如下:

    csi:
      volumeAttributes:
        # 原有属性保留
        storageAccountZone: "eastus-1,eastus-2,eastus-3" # 替换为实际可用区列表
    
  • 改用动态PV创建:推荐使用动态存储类自动生成PV,Azure Blob CSI驱动会自动识别ZRS存储的多可用区属性,无需手动配置拓扑,从根源避免此类问题。确保存储类azureblob-fuse-premium关联的是ZRS存储账户。

  • 验证修复效果:修复后,通过kubectl describe pod <pod-name>确认Pod可调度到不同可用区节点;通过kubectl describe pv <pv-name>检查PV的拓扑字段,确认包含多个可用区信息。

内容的提问来源于stack exchange,提问作者ASH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:47:20