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

Azure OpenShift集群中PVC持续处于Pending状态的求助

问题分析与解决方案

核心问题总结

  1. 存储类配置语法错误:storageAccount参数值未正确闭合(<storage-account-name?缺少末尾的>),导致CSI驱动无法解析配置
  2. PVC配置冲突:手动指定了volumeName: test-pv,但未提前创建对应PV,且动态供应模式下无需指定该字段,直接阻断了动态创建流程
  3. 误解secret生成逻辑:当手动指定现有存储账户时,系统不会自动生成secret,必须手动创建包含存储账户密钥的secret
  4. 冗余参数干扰:存储类中server参数属于冗余配置,会与storageAccount参数冲突,CSI驱动会自动推导服务器地址

修复步骤

1. 修正存储类配置

修正语法错误并移除冗余参数,示例如下:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: azure-file
provisioner: file.csi.azure.com
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
  - noperm
parameters:
  location: westeurope
  skuName: Standard_LRS
  storageAccount: <你的存储账户完整名称>
  resourceGroup: <你的资源组名称>
  secretNamespace: kube-system
  secretName: azure-storage-creds
reclaimPolicy: Delete
volumeBindingMode: Immediate

2. 调整PVC配置

删除volumeName字段,让存储类自动动态创建PV:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: storage-test
  namespace: test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: azure-file
  volumeMode: Filesystem

3. 手动创建存储账户密钥secret

在指定的secretNamespace下创建包含存储账户凭证的secret:

kubectl create secret generic azure-storage-creds --namespace kube-system \
--from-literal=azurestorageaccountname=<你的存储账户名> \
--from-literal=azurestorageaccountkey=<你的存储账户访问密钥>

额外排查步骤

  • 检查Azure Files CSI驱动控制器状态,确保所有pod正常运行:
    kubectl get pods -n kube-system -l app=csi-azurefile-controller
    
  • 查看CSI控制器日志,排查具体错误:
    kubectl logs -n kube-system <csi-azurefile-controller-pod名称> -c csi-provisioner
    
  • 验证secret内容正确性:
    kubectl get secret azure-storage-creds -n kube-system -o yaml
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:30:13