我无法使用rest获得名称空间列表,rest端点是https://<localhost>:8001/api/v1/namespaces
。
我在用邮递员。我将重复这些步骤:
kubectl create serviceaccount exampleuser
kubectl create rolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser
kubectl describe rolebinding <nameofrolebinding>
kubectl describe serviceaccount exampleuser kubectl describe secret exampleuser-xxxx-xxxx
我会用我到这里的令牌来鉴定邮递员的身份。
GET https://<ipofserver>:port/api/v1/namespace
8月使用无记名令牌。
列出集群中所有名称空间的预期结果。就像kubectl get namespaces
。但收到了如下警告。
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "namespaces is forbidden: User \"system:serviceaccount:default:exampleuser\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope",
"reason": "Forbidden",
"details": {
"kind": "namespaces"
},
"code": 403
}
我已经为用户使用了“集群-管理”集群角色,仍然得到与身份验证相关的错误。请帮帮忙。
发布于 2019-05-22 08:30:18
您应该使用clusterrolebinding
而不是rolebinding
:
kubectl create clusterrolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser
RoleBinding
意味着对命名空间资源的权限,但namespace
不是namespaced
资源,您可以通过kubectl api-resouces
检查这一点。
在角色绑定和聚类绑定上有更详细的信息:
权限可以在带有RoleBinding的命名空间内授予,也可以在集群范围内使用ClusterRoleBinding授予。
发布于 2019-05-22 08:33:52
所以问题是,我需要使用下面的clusterrolebinding检查,而不是使用角色绑定。
kubectl create rolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
kubectl create clusterrolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
clusterrolebinding作用域是一个名称空间,而作用域是整个集群。
要使用api/v1/命名空间,我们需要使用clusterrolebinding
https://stackoverflow.com/questions/56250290
复制相似问题