【问题标题】:Azure csi disk FailedAttachVolume issue : could not get disk name from disk URLAzure csi 磁盘 FailedAttachVolume 问题:无法从磁盘 URL 获取磁盘名称
【发布时间】:2020-03-31 01:06:28
【问题描述】:

我正在使用 azure csi 磁盘驱动程序方法来实现 K8 持久卷。我已经在我的 K8 集群中安装了 azure-csi-drivers 并使用下面提到的文件作为端到端测试的目的,但是由于以下错误,我的部署失败了:

警告 FailedAttachVolume 23s (x7 over 55s) attachdetach-controller 卷“pv-azuredisk-csi”的 AttachVolume.Attach 失败:rpc 错误: code = NotFound desc = Volume not found, failed with error: could not 获取磁盘名称 /subscriptions/464f9a13-7g6o-730g-hqi4-6ld2802re6z1/resourcegroups/560d_RTT_HOT_ENV_RG/providers/Microsoft.Compute/disks/560d-RTT-PVDisk, 正确格式: ./subscriptions/(?:.)/resourceGroups/(?:.*)/providers/Microsoft.Compute/disks/(.+)

注意:我检查了多次,我的 URL 是正确的,但我不确定资源组名称中的下划线是否造成任何问题,RG = "560d_RTT_HOT_ENV_RG"。请建议是否有人知道出了什么问题?

K8 版本:14.9
CSI 驱动程序:v0.3.0

我的 YAML 文件是:

csi-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-azuredisk-csi
namespace: azure-static-diskpv-csi-fss
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
csi:
driver: disk.csi.azure.com
readOnly: false
volumeHandle: /subscriptions/464f9a13-7g6o-730g-hqi4-6ld2802re6z1/resourcegroups/560d_RTT_HOT_ENV_RG/providers/Microsoft.Compute/disks/560d-RTT-PVDisk
volumeAttributes:
cachingMode: ReadOnly
fsType: ext4
-------------------------------------------------------------------------------------------------
csi-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-azuredisk-csi
namespace: azure-static-diskpv-csi-fss
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
volumeName: pv-azuredisk-csi
storageClassName: ""

nginx-csi-pod.yaml

kind: Pod
apiVersion: v1
metadata:
name: nginx-azuredisk-csi
namespace: azure-static-diskpv-csi-fss
spec:
nodeSelector:
beta.kubernetes.io/os: linux
containers:
image: nginx
name: nginx-azuredisk-csi
command:
"/bin/sh"
"-c"
while true; do echo $(date) >> /mnt/azuredisk/outfile; sleep 1; done
volumeMounts:
name: azuredisk01
mountPath: "/mnt/azuredisk"
volumes:
name: azuredisk01
persistentVolumeClaim:
claimName: pvc-azuredisk-csi

【问题讨论】:

  • 您是否尝试更新我的答案中的解决方案,它是否解决了您的问题?还是您还需要更多帮助?
  • 为什么不回复?你真的要解决问题吗?!
  • 抱歉,回复晚了,因为我没有更改 RG 名称的权限,所以无法检查。我已向有关当局提出此问题,一旦更改,我会检查并确保更新您。
  • 我想你误会了我。我的意思是您需要在 PV YAML 文件中将 RG 名称更改为小写字母,而不是 azure 资源。即使 RG 名称包含大写字母。
  • 不幸的是,将小写的 RG 更改为无效。面临同样的错误。我将磁盘 URL 更改为:/subscriptions/464f9a13-7g6o-730g-hqi4-6ld2802re6z1/resourcegroups/560d_rtt_hot_env_rg/providers/Microsoft.Compute/disks/560d-RTT-PVDisk 和下一次:/subscriptions/464f9a13- 7g6o-730g-hqi4-6ld2802re6z1/resourcegroups/560d_rtt_hot_env_rg/providers/Microsoft.Compute/disks/560d-rtt-pvdisk,没有一个工作。

标签: azure kubernetes persistent-volumes


【解决方案1】:

您似乎在另一个资源组中创建磁盘,而不是 AKS 节点组。因此,您必须首先将Contributor 角色授予群集的 Azure Kubernetes 服务 (AKS) 服务主体到磁盘的资源组。详情请见Create an Azure disk

更新:

终于找到了找不到卷的原因。我认为这是一个愚蠢的定义。用于持久卷的磁盘的资源 ID 区分大小写。所以你需要改变你的 csi-pv.yaml 文件,如下所示:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-azuredisk-csi
  namespace: azure-static-diskpv-csi-fss
spec:
  capacity:
    storage: 10Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: disk.csi.azure.com
    readOnly: false
    volumeHandle: /subscriptions/464f9a13-7g6o-730g-hqi4-6ld2802re6z1/resourcegroups/560d_rtt_hot_env_rg/providers/Microsoft.Compute/disks/560d-RTT-PVDisk
    volumeAttributes:
      cachingMode: ReadOnly
      fsType: ext4

另外,答案的第一段也很重要。

更新:

下面是CSI驱动的静态磁盘在我这边工作的结果截图:

【讨论】:

  • 你是如何得出这个结论的?
  • @4c74356b41 错误显示磁盘组和链接中的信息。
  • 它说没有找到,不是认证失败,也没有链接。除此之外,它还专门讨论了错误的 uri 格式\无法解析 uri
  • @Charles Xu:K8 Vms 和磁盘都来自同一个资源组。还有一件事,我在我的 K8 上安装了 azure 磁盘 CSI 驱动程序,部署似乎没问题,但我没有对驱动程序进行完整性检查。
  • @goldench 更新答案,它会为你工作。如果你用我的回答解决了问题,请标记。
猜你喜欢
  • 2020-03-01
  • 2019-03-11
  • 2012-08-27
  • 2016-05-29
  • 2021-09-22
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多