无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

时间:2021-02-15 03:32:48

标签: azure kubernetes azure-aks kubernetes-pvc

我正在尝试为 pod 部署提供 PVC,但我正面临此错误:

<块引用>

无法使用 StorageClass“xxxxxxxxxxx”配置卷:无法获取存储帐户的存储密钥 yyyyyyyyyyy:无法获取存储帐户的存储密钥 yyyyyyyyyyy:可重试:false,RetryAfter:0s,HTTPStatusCode:400,RawError:可重试:false , RetryAfter: 0s, HTTPStatusCode: 400, RawError: azure.BearerAuthorizer#WithAuthorization: 未能刷新令牌以请求 http://localhost:7788/subscriptions/zzzzzzzzzzz-aaaaaa-bbbbbb/resourceGroups/MC_kkkkkkkkkkprovkkiderkk/Microsoft /storageAccounts/yyyyyyyyyyyyyyy/listKeys?api-version=2019-06-01: StatusCode=400 -- 原始错误:adal:刷新请求失败。状态代码 = '400'。响应正文:{"error":"unauthorized_client","error_description":"AADSTS700016:在目录'pppppppppppp-aaaaaaaaaaaa-ttttttttttt'中找不到标识符为'aaaaaaa-bbbbbbbb-cccccccccccccccc'的应用程序。未由租户的管理员安装或租户中的任何用户同意。您可能将身份验证请求发送给了错误的租户。

我对 AKS 还很陌生,我相信我缺少一些非常重要的东西,但还没有在网络上找到任何帮助。

这是我已经仔细检查过的:

  • 使用正确的帐户登录和订阅
  • 引用的存储帐户确实存在
  • 它与 AKS 群集在同一区域和资源组中

存储类清单

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: xxxxxxxx
provisioner: kubernetes.io/azure-file
parameters:
  skuName: Standard_LRS
  storageAccount: yyyyyyyyyyyy
  resourceGroup: MC_zzzzzzzzzzzzzzzzz

PVC 清单

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: xxxxxxxx
  resources:
    requests:
      storage: 5Gi 

我使用 Lens 来管理我的集群。 PVC 资源挂在 Pending 状态: PVC deployment pending status

你们能帮我弄清楚吗?

1 个答案:

答案 0 :(得分:2)

根据 github 问题 here,如果集群没有服务主体或服务主体在 1 年有效期后过期,则会发生这种情况。

您可以通过运行以下命令来验证它。通过在任何主节点或代理节点上打开 /etc/kubernetes/azure.json 文件来检索详细信息。

az login --service-principal -u <aadClientId> -p <aadClientSecret> -t <tenantId>

doc 后面更新或轮换凭证应该可以解决这个问题。

或者,您可以使用托管标识而不是服务主体来获取权限。托管身份比服务主体更易于管理,并且不需要更新或轮换。有关详细信息,请参阅 Use managed identities