将 Azure 磁盘附加到 AKS 容器时出现权限错误



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

我的工作基于 https://learn.microsoft.com/en-us/azure/aks/azure-disk-volume>的"> Azure 磁盘配置数据卷的操作指南 - 静态"。据我所知,我没有错过任何步骤。

我在 YAML 文件中通过配置定义如下:

种类:部署 元数据: 名称: 菲奥德普数据库 命名空间:生产 规范: 选择器: 匹配标签: 应用: 菲奥 副本: 1 策略: 类型:滚动更新 模板: 元数据: 标签: 应用: 菲奥 规范: 终止宽限期秒数:1 卷: - 名称:数据库卷 azureDisk: 磁盘名称:PHIO_DB_VOL diskURI:/subscriptions//providers/Microsoft.Compute/disks/PHIO_DB_VOL 种类:托管 器皿: - 图片:phioweb.azurecr.io/phiodb 名称: 数据库 港口: - 集装箱港口:3306 卷装载: - mountPath:/var/lib/mysql 名称:数据库卷

但是,当我执行 kubectl 应用 -f .yml 时,pod 永远不会启动。如果我做一个"kubectl 描述所有 -n 生产",我会看到以下内容:

类型原因 来自消息的年龄 ----     ------              ----                ----                                        ------- 正常调度 31m 默认调度程序 已成功将生产/phio-dep-db-6c6ddc885-p4ntg 分配给 AKS-nodepool1-18816840-vmss000001 警告失败附加卷 79s(x23 超过 31 米( 附加分离控制器附加卷。卷"dbvolume"的附加失败:计算。磁盘客户端#获取:响应请求失败:状态代码 = 403 -- 原始错误:自动休息/azure:服务返回错误。状态 = 403 代码="授权失败" 消息="对象 ID 为"><相同 GUID=">"的客户端''无权对作用域'/订阅//providers/Microsoft.Compute/disks/PHIO_DB_VOL'执行操作Microsoft,或者作用域无效。如果最近授予了访问权限,请刷新您的凭据。 警告 装载失败 23s (x14 超过 29 米( kubelet, aks-nodepool1-18816840-vmss000001 无法挂载 pod "phio-dep-db-6c6ddc885-p4ntg_production(0e326781-2936-4451-9446-9608a8f41439("的卷:等待挂载或挂载 Pod "production"/"phio-dep-db-6c6ddc885-p4ntg"的卷超时。未挂载卷的列表=[数据库卷]。未附加卷列表=[dbvolume default-token-s7svk]

MS 文档中没有任何关于向 Azure 磁盘分配权限的内容,并且 YAML 中没有缺少明显的参数。

有人知道我错过了什么吗?

非常感谢。

(我已经对输出进行了一些清理,但这都是测试,Azure 订阅将在这项工作后进行分箱,即使它说生产(

来自这里的文档

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

从这里的文档

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

  1. 创建自定义角色并定义以下角色权限: Microsoft.计算/磁盘/读取 Microsoft.计算/磁盘/写入
  2. 或者,在资源组上分配存储帐户参与者内置角色

最新更新