尝试掌舵ls时configmaps被禁止错误

时间:2018-12-05 08:07:40

标签: kubernetes kubernetes-helm

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对我来说没有意义。这是什么意思?

请忽略如何真正解决错误,我只是在寻找对此的解释。

2 个答案:

答案 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/