首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes群集内身份验证

问Kubernetes群集内身份验证
EN

Stack Overflow用户
提问于 2020-05-29 23:36:35
回答 2查看 330关注 0票数 0

我的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:

代码语言:javascript
复制
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的授权列表吗?

EN

回答 2

Stack Overflow用户

发布于 2020-05-30 00:13:02

您可以使用以下命令查看服务账号在特定命名空间中的特定权限

代码语言:javascript
复制
kubectl auth can-i get pods --as=system:serviceaccount:mynamespace:default -n mynamespace

如果上面的命令返回no,这意味着服务帐户没有权限的RBAC。

列出服务帐户使用的所有权限

代码语言:javascript
复制
kubectl auth can-i --list --as=system:serviceaccount:mynamespace:default

要了解更多信息,请使用kubectl auth can-i -h

票数 1
EN

Stack Overflow用户

发布于 2020-05-30 04:58:58

豆荚确实拥有必要的权利。错误出现在api_client实例的错误初始化中,我只需调用client.Configuration()就可以单独执行该操作。

我解决了避免初始化api_client实例,直接从client.CoreV1Api导入实例的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62089605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档