Error: configmaps is forbidden: User "system:serviceaccount:k8s-tiller:k8s-tiller" cannot list configmaps in the namespace "k8s-tiller": clusterrole.rbac.authorization.k8s.io "tiller" not found
有人可以解释这个错误吗? "k8s-tiller": clusterrole.rbac.authorization.k8s.io "tiller" not found
对我来说没有意义。这是什么意思?
请忽略如何真正解决错误,我只是在寻找对此的解释。
答案 0 :(得分:3)
RBAC 的此错误(要了解有关RBAC的更多信息,请参见here)。
名称空间k8s-tiller
中的 Serviceaccount k8s-tiller
无权列出名称空间configmaps
中的k8s-tiller
。另外,集群中不存在集群角色 tiller
。您为服务帐户k8s-tiller
创建的ClusterRoleBinding或RoleBinding包括ClusterRole tiller
作为roleRef
。但是那个ClusterRole tiller
不存在。
答案 1 :(得分:1)
我可以确认Nightfury在说什么,但是您不需要设置K8S Clusterrole,您只需要为名称空间部署分and并为其分配正确的角色/角色绑定和服务帐户即可
对于部署和历史记录的使用,您可能更喜欢按K8S命名空间部署分till 不覆盖例如具有相同名称的某些部署
要这样做:
创建SA:
kubectl create sa tiller-deploy-sa
创建角色:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: <Your_namespace>
name: tiller-deploy-role
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
请注意,此角色不建议用于PROD,仅用于示例目的
kubectl apply -f <filename>.yml
创建角色绑定:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: tiller-deploy-rolebinding
namespace: <Your_namespace>
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: tiller-deploy-role
namespace: <Your_namespace>
subjects:
- kind: ServiceAccount
name: tiller-deploy-sa
namespace: <Your_namespace>
应用创建的文件
kubectl apply -f <filename>.yml
您可以使用K8S文档了解更多信息: https://kubernetes.io/docs/reference/access-authn-authz/rbac/