我在使用用户管理的身份(UAMI)在Kubernetes集群中挂载Azure文件共享时遇到问题。虽然我已经安装了Azure File CSI驱动程序并且它正在正确运行,但我仍然遇到错误:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 45s default-scheduler Successfully assigned default/mypod to aks-agentpool-xxxx
Warning FailedMount 14s (x7 over 46s) kubelet MountVolume.SetUp failed for volume "azure" : rpc error: code = InvalidArgument desc = failed to get account name from csi-xxx
字符串
以下是我迄今为止尝试的方法:
1.已验证的UAMI权限:UAMI在Azure存储帐户上具有“存储帐户贡献者”角色。
1.在Kubernetes中配置AzureIdentity和AzureIdentityBinding:确保这些资源配置正确。AzureIdentity有正确的clientID
和resourceID
,AzureIdentityBinding
的选择器匹配我的pod中的aadpodidbinding
标签。
- Pod配置:我的Pod有正确的aadpodidbinding标签。pod.yaml配置为使用SMB协议
- CSI驾驶员姓名:我无法从Azure File CSI驱动程序Pod中检索日志。运行
kubectl logs -l app=csi-azurefile -n kube-system
将返回“No resources found in kube-system namespace,"
,即使Pod存在并正在运行。 - Pod事件:查看了Pod的事件,但没有找到指向问题根本原因的具体线索。
我认为这个问题可能与UAMI身份验证或Azure File CSI驱动程序配置有关,但我无法确定确切的原因。我无法访问CSI驱动程序日志的事实也令人困惑。
任何关于如何解决这个问题或进一步诊断这个问题的见解或建议将不胜感激。
1条答案
按热度按时间5kgi1eie1#
要使用用户名管理的身份在Kubernetes群集上装载Azure文件共享,您应该首先使用user assigned managed identity.创建AKS群集
这可以使用以下Azure CLI命令来实现-
字符串
x1c 0d1x的数据
您可以使用az identity show --ids
进行验证
或从门户
接下来是Azure文件共享挂载部分。
转到您的群集,使用带有
--query nodeResourceGroup
参数的az aks show
命令确定群集的资源组名称。型
接下来,创建一个存储帐户:
型
x1c4d 1x接下来,将存储帐户连接字符串声明为环境变量,以便将来在创建文件共享时使用:
型
继续创建文件共享,将
shareName
替换为您选择的名称:型
导出存储帐户密钥:
型
使用这些凭据创建Kubernetes secret。创建Kubernetes卷时需要这些值。
kubectl create secret
输出
将文件共享挂载为永久卷,
fileMode
和dirMode
的默认值为 0777。接下来,通过应用相应的配置来设置持久卷和声明。
确认PVC的创建和绑定:
型
输出
更新您的容器规格以整合PVC。
参考文档:Ms DocMs DocMount File share guideSimilar thread