将Azure磁盘连接到AKS pod时出现权限错误

将Azure磁盘连接到AKS pod时出现权限错误,azure,kubernetes,permissions,azure-aks,azure-disk,Azure,Kubernetes,Permissions,Azure Aks,Azure Disk,我已经和这个错误斗争了几个小时了。找到了几篇文章,但到目前为止没有任何帮助 我的工作基于来自的“如何指南>配置数据卷>Azure磁盘-静态”。据我所知,我没有错过任何一步 我在YAML文件中定义了by config,如下所示: kind: Deployment metadata: name: phio-dep-db namespace: production spec: selector: matchLabels: app: phi

我已经和这个错误斗争了几个小时了。找到了几篇文章,但到目前为止没有任何帮助

我的工作基于来自的“如何指南>配置数据卷>Azure磁盘-静态”。据我所知,我没有错过任何一步

我在YAML文件中定义了by config,如下所示:

kind: Deployment metadata: name: phio-dep-db namespace: production spec: selector: matchLabels: app: phio replicas: 1 strategy: type: RollingUpdate template: metadata: labels: app: phio spec: terminationGracePeriodSeconds: 1 volumes: - name: dbvolume azureDisk: diskName: PHIO_DB_VOL diskURI: /subscriptions/<my-sub-id/resourceGroups/<my-grp>/providers/Microsoft.Compute/disks/PHIO_DB_VOL kind: Managed containers: - image: phioweb.azurecr.io/phiodb name: db ports: - containerPort: 3306 volumeMounts: - mountPath: /var/lib/mysql name: dbvolume 种类:部署 元数据: 姓名:phio dep db 名称空间:生产 规格: 选择器: 火柴标签: app:phio 副本:1份 战略: 类型:RollingUpdate 模板: 元数据: 标签: app:phio 规格: 终止时间:秒:1 卷数: -名称:dbvolume azureDisk: diskName:PHIO_DB_VOL 来自文档的diskURI:/subscriptions/

创建Azure磁盘用于AKS时,可以在节点资源组中创建磁盘资源。此方法允许AKS群集访问和管理磁盘资源。如果改为在单独的资源组中创建磁盘,则必须 为您的客户授予Azure Kubernetes服务(AKS)服务主体 将参与者角色群集到磁盘的资源组。 或者,您可以将系统分配的托管标识用于 权限,而不是服务主体。欲了解更多信息, 看

从文件中

您可能需要访问其他资源组中的现有磁盘资源。分配以下角色权限集之一:

  • 创建自定义角色并定义以下角色权限: Microsoft.Compute/disks/read Microsoft.Compute/disks/write
  • 或者,为资源组分配存储帐户参与者内置角色

  • 嗨,谢谢你看这个。我仔细检查了一下,发现磁盘和AK都在同一个资源组中,这就是我感到困惑的原因。ACR也在同一组,工作正常。谢谢检查节点资源组中是否有磁盘资源?您好,我刚回来说我可能已经修复了它,这时我看到了您的评论。磁盘位于“CT4025”资源组中,与AKS相同。我一整天都在做这件事,尝试各种各样的事情,决定删除磁盘并重新添加。我一字不差地按照MS的说明操作,注意到他们把磁盘放在了“MC_xxx”资源组中。我这次也这么做了,把它放在“MC_CT4025_phio_uksouth”里。吊舱已经启动,看起来很稳定。我将很快进行测试。上次,我想我认为要使用的资源组是我创建的资源组,我不知道还有另一个资源组被创建。在过去的几个小时里,我学到了很多,现在我重新阅读了MS文档,我现在明白了为什么node这个词是粗体的。你最初的答案也更有意义。还没有完全理解组之间的区别,以及为什么磁盘应该在节点组中,而其他东西不在节点组中。需要更多的阅读!你知道吗?我猜节点的身份是由azure验证的,如果磁盘和节点在同一个资源组中,那么身份验证就可以工作,而不需要任何额外的工作 Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 31m default-scheduler Successfully assigned production/phio-dep-db-6c6ddc885-p4ntg to aks-nodepool1-18816840-vmss000001 Warning FailedAttachVolume 79s (x23 over 31m) attachdetach-controller AttachVolume.Attach failed for volume "dbvolume" : compute.DisksClient#Get: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="AuthorizationFailed" Message="The client '<GUID>' with object id '<same GUID>' does not have authorization to perform action 'Microsoft.Compute/disks/read' over scope '/subscriptions/<my-sub-id/resourceGroups/<my-grp>/providers/Microsoft.Compute/disks/PHIO_DB_VOL' or the scope is invalid. If access was recently granted, please refresh your credentials." Warning FailedMount 23s (x14 over 29m) kubelet, aks-nodepool1-18816840-vmss000001 Unable to mount volumes for pod "phio-dep-db-6c6ddc885-p4ntg_production(0e326781-2936-4451-9446-9608a8f41439)": timeout expired waiting for volumes to attach or mount for pod "production"/"phio-dep-db-6c6ddc885-p4ntg". list of unmounted volumes=[dbvolume]. list of unattached volumes=[dbvolume default-token-s7svk]