我已经与这个错误作斗争了几个小时了。找到了几篇文章,但到目前为止没有任何帮助。
我的工作基于“操作指南 > 配置数据卷 > 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
您可能需要访问另一个资源组中的现有磁盘资源。分配以下一组角色权限之一:
- 创建自定义角色并定义以下角色权限:
Microsoft.Compute/磁盘/读取
Microsoft.Compute/磁盘/写入
- 或者,在资源组上分配存储帐户贡献者内置角色
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)