我的AKS集群似乎无法执行对k8s接口的基本请求,例如使用pods的集群内令牌。当我在本地机器上使用相同的代码时,也就是在config.load_kube_config上,一切运行正常。
我使用的是python k8s client 11.0.0,并通过config.load_incluster_config()加载配置。我得到以下错误:
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Unauthorized","reason":"Unauthorized","code":401}
当尝试简单地列出我的pods时(使用client.list_namespaced_pod)。我还尝试执行一个原始的get请求,但结果相同。
我尝试扩展集群角色以专门访问资源,这里是我的clusterrole和clusterrolebinding:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: clusterrolename
rules:
- apiGroups:
- ""
resources:
- pods
- namespaces
verbs:
- get
- list
- apiGroups:
- metrics.k8s.io
resources:
- '*'
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: clusterrolebindingname
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: clusterrolename
subjects:
- kind: ServiceAccount
name: default
namespace: mynamespace但我总是得到相同的结果。
同样的方法在linux和windows节点上的效果不一样。
以前在linux机器(纯linux集群)上使用非常相同的方法也是成功的。
会不会和SDK的版本有关?它会不会是集群中的一些不同的东西?有人知道如何检索特定ServiceAccount的授权列表吗?
发布于 2020-05-30 00:13:02
您可以使用以下命令查看服务账号在特定命名空间中的特定权限
kubectl auth can-i get pods --as=system:serviceaccount:mynamespace:default -n mynamespace如果上面的命令返回no,这意味着服务帐户没有权限的RBAC。
列出服务帐户使用的所有权限
kubectl auth can-i --list --as=system:serviceaccount:mynamespace:default要了解更多信息,请使用kubectl auth can-i -h
发布于 2020-05-30 04:58:58
豆荚确实拥有必要的权利。错误出现在api_client实例的错误初始化中,我只需调用client.Configuration()就可以单独执行该操作。
我解决了避免初始化api_client实例,直接从client.CoreV1Api导入实例的问题。
https://stackoverflow.com/questions/62089605
复制相似问题