我试图理解为什么在一个集群上允许一个操作,但在另一个集群上我得到了以下结果
Exception encountered setting up namespace watch from Kubernetes API v1 endpoint https://10.100.0.1:443/api: namespaces is forbidden: User \"system:serviceaccount:kube-system:default\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope ({\"kind\":\"Status\",\"apiVersion\":\"v1\",\"metadata\":{},\"status\":\"Failure\",\"message\":\"namespaces is forbidden: User \\\"system:serviceaccount:kube-system:default\\\" cannot list resource \\\"namespaces\\\" in API group \\\"\\\" at the cluster scope\",\"reason\":\"Forbidden\",\"details\":{\"kind\":\"namespaces\"},\"code\":403}\n)"我在管理两个Kubernetes集群-
使用Kops版本v1.14.8引导的clusterA
在AWS EKS版本v1.14.9-eks-f459c0上启动的clusterB
所以我尝试使用kubectl auth命令来解决这个问题,我确实看到在一个命令上我是被允许的,但是在第二个命令中,我不被允许,正如你所看到的:
kubectl config use-context clusterA
Switched to context "clusterA".
kubectl auth can-i list pods --as=system:serviceaccount:kube-system:default -n kube-system
yes
kubectl config use-context clusterB
Switched to context "clusterB".
kubectl auth can-i list pods --as=system:serviceaccount:kube-system:default -n kube-system
no有没有办法理解这两个基于yes/no的决定是什么?谢谢你的帮助!
发布于 2020-07-13 19:48:52
决策yes/no基于是否存在允许default命名空间中的kube-system服务帐户在资源list上执行动词namespace的clusterrole和clusterrolebinding或rolebinding。
对于namespace资源,诀窍在于需要有一个clusterrole而不是role,因为namespace是集群范围内的资源。
您可以使用以下命令检查Kubernetes群集中存在的clusterrole、role、clusterrolebinding、rolebinding是什么
kubectl get clusterrole,clusterrolebinding
kubectl get role,rolebinding -n namespacename有关更多详细信息,请参阅Kubernetes RBAC here
https://stackoverflow.com/questions/62875055
复制相似问题