在AKS中使用pod identity获取token - 解决获取token报错

网友投稿 252 2022-09-29

在AKS中使用pod identity获取token - 解决获取token报错

在之前的demo中,实际上一开始部署好pod之后获取token是报错的,提示failed to refresh token

这点其实还挺奇怪的,官方的sample没什么理由会报错,但是有可能有什么步骤官方没写或者没写在sample里,排查下log可以看看到底是什么问题

pod identity中两个核心组件mic和nmi的log是非常重要的,可以用kubectl logs看下输出的log里有什么信息

Kubectl logs mic-847b4bd46-qkfr8

mic的log里其实很清楚的指明了问题的原因,这个问题是因为有一个AAD中的object没有权限导致的,并且告诉了我们这个object的ID是什么

Original Error: message='The client *aa**bb**cc with object id *aa**bb**cc does not have authorization to perform action 'Microsoft.Compute/virtualMachineScaleSets/read' over scope ****'

但是很遗憾的是具体这个object是干啥的并没有写那么清楚,不过我们可以自己查下,只要有object id就可以直接查到这个object对应的各种属性,这要借助于Azure CLI

az ad sp list --all --query "[?objectId =='**' ]"

查询出来的结果可以看到,这个其实就是AKS用到的managed identity

而要解决这个问题,需要手动进行授权,这点其实翻看下pod identity中关于role assignment的文章也可以清楚看到,只不过一开始以为AKS应该不需要手动授权所以直接忽略了,最后看来权限还是要手动加的

$ID=az aks show -g Apache -n SSLAKS --query identityProfile.kubeletidentity.clientId -o tsv$SUBSCRIPTION_ID='****'az role assignment create --role "Managed Identity Operator" --assignee $ID --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/MC_Apache_SSLAKS_eastasia"az role assignment create --role "Virtual Machine Contributor" --assignee $ID --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/MC_Apache_SSLAKS_eastasia"

授权完成后,记得把MIC pod删除自动重建下,要不然还是一直报权限有问题

kubectl delete pod mic-847b4bd46-qkfr8

重新查看应用pod的log,成功拿到token,问题解决了

kubectl logs pod-identity-demo

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在AKS中结合pod identity以及CSI Driver mount key vault中的secret
下一篇:利用java和sqlserver建立简易图书管理系统的完整步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~