我无法使用rest api获取名称空间列表,并且剩余终点为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
使用承载令牌的AUTH。
预期结果以列出集群中的所有名称空间。喜欢
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
}
我已经为用户使用了“ cluster-admin” clusterrole,仍然出现与身份验证相关的错误。 请帮忙。
答案 0 :(得分:1)
您应该使用clusterrolebinding
而不是rolebinding
:
kubectl create clusterrolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser
RoleBinding
表示对命名空间资源的权限,但是namespace
不是namespaced
资源,您可以通过kubectl api-resouces
进行检查。
在rolebinding-and-clusterrolebinding处有更多详细信息:
权限可以在带有RoleBinding的名称空间中授予,也可以在带有ClusterRoleBinding的群集范围内授予
答案 1 :(得分:0)
因此问题不是使用 rolebinding ,而是需要使用 clusterrolebinding 检查
kubectl create rolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
kubectl create clusterrolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
角色绑定范围最多为命名空间,并且 集群绑定范围是整个集群。
要使用api / v1 /命名空间,我们需要使用 clusterrolebinding