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

2023-11-23

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

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

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


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
  

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


  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]
  

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

有人知道我缺少什么吗?

非常感谢。

(我已经对输出进行了一些清理,但这都是测试,并且 Azure 订阅将在完成此工作后被分类,即使它说是生产)


来自文档here

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

来自文档here

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

  1. 创建自定义角色并定义以下角色权限: Microsoft.Compute/磁盘/读取 Microsoft.Compute/磁盘/写入
  2. 或者,在资源组上分配存储帐户贡献者内置角色
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Azure 磁盘附加到 AKS pod 时出现权限错误 的相关文章

随机推荐

  • 如何在 Node.js 中检查 ASP.NET 密码哈希

    首先我读了这个使用 SHA256 和 NET Node js 对密码进行哈希处理这对我没有帮助 我必须验证在 Node js 环境中的 ASP NET 中创建的密码哈希值 有人告诉我密码是使用以下算法生成的 ASP NET 成员资格使用的默
  • 检测到 globalKeyboardHook 中的 CallbackOnCollectedDelegate

    我正在使用全局键盘挂钩类 此类允许检查是否在任何地方按下了键盘按键 一段时间后我遇到了一个错误 CallbackOnCollectedDelegate was detected A callback was made on a garbag
  • 使用 else 子句终止 if ... else if 构造有什么好处?

    我们的组织有一个required编码规则 没有任何解释 if else if 构造应以 else 子句终止 示例1 if x lt 0 x 0 else not needed 示例2 if x lt 0 x 0 else if y lt 0
  • Bootstrap:具有绝对定位的容器?

    我有以下标记 div class banner wrapper div class banner image style background image url div div class container div class row
  • 如何终止与 SQL Server 2005 数据库的所有当前连接?

    我想重命名数据库 但不断收到数据库 无法获取独占锁 的错误 这意味着某些连接仍然处于活动状态 如何终止与数据库的所有连接以便重命名它 该方法的原因是亚当建议不起作用的是 在您循环活动连接的过程中 可以建立新的连接 并且您会错过这些连接 您可
  • 跨 C API 边界传递异常

    我正在用 C 编写一个库 它使用旧的 C API 我的库的客户端可以指定回调函数 这些函数是通过我的库间接调用的 而我的库是通过C API调用的 这意味着必须处理客户端回调中的所有异常 我的问题是 如何捕获边界一侧的异常 并在重新跨越 C
  • Azure Powershell - 检查资源是否存在

    我正在使用 Powershell 自动设置我的 Azure 环境 创建存储帐户 数据库 网站等 在开发过程中 我想要提供和拆除很多东西 很多时候 我想运行我的配置脚本并创建一个天蓝色资产如果它还不存在 但是 我还没有找到一种优雅的方法来做到
  • android studio gradle版本增量

    我正在尝试在 gradle android studio 中设置一个不错的小版本控制脚本 其中版本名称在每次构建时都会增加 而版本代码仅在我进行发布构建时才会增加 这可能吗 我认为可以解决这个问题的是检查下面的 if 语句是否是一个版本 但
  • Jersey 序列化/反序列化问题:抽象类型只能使用附加类型信息进行实例化

    我使用 jersey 进行序列化和反序列化 我已经使用 jersey 在 WebLogic 上创建了 REST 通道 我有包含抽象类的结果对象 Jersey 将此类的实现名称添加到结果元数据中 order type installation
  • 用代数方法简化平方根

    我想以代数方式简化整数的平方根 而不是以数字方式计算它 即 800应该20 2 not 28 2842712474619 我找不到任何方法通过编程来解决这个问题 对根下的数字进行因式分解 选出成对出现的因式 将其余的留在根下 800 2 x
  • 隐藏 TreeView 项目

    我一直在尝试隐藏 TreeView 中的项目 我使用自定义数据类型作为源 称为 SettingsMenuItem 它继承自 FrameworkElement 当前为 FrameworkContentElement 因为否则 TreeView
  • Java中的静态块[重复]

    这个问题在这里已经有答案了 前几天我正在查看一些代码 我发现 static 来自 C 我不知道为什么会出现这种情况 这不是一个错误 因为代码编译得很好 这个 静态 代码块是什么 It s a 静态初始化器 它在类加载 或准确地说是初始化 但
  • HTML5 中的 iframe 拉伸

    我有两个 html 文件 一个包含另一个带有 iframe 的文件 我想让这个 iframe 拉伸到父 html 的整个高度 所以第一个 html 文件 具有红色背景 如下所示 第二个 具有蓝色背景
  • Python:比较两个 csv 文件中的特定列

    假设我有两个 CSV 文件 file1 和 file2 其内容如下所示 file1 fred 43 Male 23 45 blue 1 bedrock avenue file2 fred 39 Male 23 45 blue 1 bedro
  • 如何在 Delphi XE3 中的 Firemonkey FM2 应用程序中设置非客户区的样式

    我之前在 Delphi XE2 时间范围内问过这个问题 当时的答案很漂亮丑陋的黑客 根据官方发行说明 现在 Delphi XE3 支持非客户端主题 在Firemonkey FM2中的Delphi XE3中如何做到这一点 我相信这一定与样式书
  • Jenkinsfile - 脚本管道语法中的条件阶段执行

    我们正在使用脚本管道我们的语法Jenkinsfile其中定义了很多阶段来构建和部署我们的代码 我们有一个用例 如果我正在做一个任务 我想运行我的所有阶段完整构建但如果我需要执行一些 AWS 路由 则仅运行一个特定阶段 我知道我可以使用if
  • 如果将 PendingIntent 上的标志设置为 0 会发生什么?

    当您将待处理意图的标志设置为 0 时 到底会发生什么 它只是不升起一个标志还是默认为其他标志之一 不 这是创建新 PendingIntent 的 默认 行为 无论该行为是否已存在 如果您想要更专门的行为 例如在底层 Intent 相同的情况
  • TinyTds 错误:Adaptive Server 连接超时

    我们正在 Rails 3 2 12 ruby 1 9 3 上使用当前的tinyTDS gem 0 6 2 运行 Ruby on Rails 应用程序 我们使用 MS SQL 2012 或 2014 并面临比平常更多的以下错误消息 TinyT
  • 如何将 16 位 PCM 音频字节数组转换为双精度或浮点数组?

    我正在尝试对 3gpp 音频文件执行快速傅里叶变换 该文件包含来自手机麦克风的 44100kHz 的 5 秒小录音 出于显而易见的原因 我能找到的每个 Java FFT 算法都只接受 double float 或 Complex 输入 但我
  • 将 Azure 磁盘附加到 AKS pod 时出现权限错误

    我已经与这个错误作斗争了几个小时了 找到了几篇文章 但到目前为止没有任何帮助 我的工作基于 操作指南 gt 配置数据卷 gt Azure 磁盘 静态 https learn microsoft com en us azure aks azu