【问题标题】:Unable to install kubernetes charts on specified namespace无法在指定的命名空间上安装 kubernetes 图表
【发布时间】:2018-07-11 10:29:20
【问题描述】:

我在 Google Kubernetes Engine 上安装了一个集群。

然后,我创建了命名空间“staging”

$ kubectl get namespaces
default       Active    26m
kube-public   Active    26m
kube-system   Active    26m
staging       Active    20m

然后,我切换到暂存命名空间中操作

$ kubectl config use-context staging
$ kubectl config current-context
staging

然后,我在暂存命名空间上使用 helm 安装了 postgresql

helm install --name staging stable/postgresql

但我得到了:

错误:发布暂存失败:命名空间“staging”被禁止:用户“system:serviceaccount:kube-system:default”无法在命名空间“staging”中获取命名空间:未知用户“system:serviceaccount:kube-system:default "

这是什么意思..??如何让它工作..??

谢谢你..

【问题讨论】:

  • 你能用kubectl config get-contexts这个信息更新你的帖子吗
  • 您的分蘖 pod 没有获取命名空间的权限。您需要更新您在工作舱中使用的角色

标签: kubernetes kubernetes-helm


【解决方案1】:

由于您的集群启用了 RBAC,您的 tiller Pod 似乎没有足够的权限。

您正在使用 default ServiceAccount,它缺乏足够的 RBAC 权限,tiller 需要。

您只需要创建 ClusterRole、ClusterRoleBinding 和 ServiceAccount。有了它们,您可以为您的 Pod 提供必要的权限。

按照这些步骤进行

_1。创建集群角色tiller

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]

注意:我在这里使用了完全权限。

_2。在 kube-system 命名空间中创建 ServiceAccount tiller

$ kubectl create sa tiller -n kube-system

_3。创建 ClusterRoleBinding tiller

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
  apiGroup: ""
roleRef:
  kind: ClusterRole
  name: tiller
  apiGroup: rbac.authorization.k8s.io

现在您需要在您的分蘖部署中使用此 ServiceAccount。

你已经有一个,编辑它

$ kubectl edit deployment -n kube-system tiller-deploy

在PodSpec下设置serviceAccountNametiller

阅读更多关于RBAC

【讨论】:

  • 谢谢!这是我遇到的 User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace problem 的唯一解决方案,它有效。对于未来的读者,当@aerokite 写关于创建 ClusterRole 分蘖和 ClusterRoleBinding 分蘖时,将他的 yaml 复制并粘贴到两个不同的文件中,然后在每个文件上调用 kubectl create -f <the filename>
  • 我无法弄清楚tiller-deploy部分的部署的编辑,因为我在PodSpec下找不到serviceAccountName。我确实在docs.bitnami.com/azure/get-started-aks 网页上找到了helm init --upgrade --service-account tiller,这似乎解决了最后一个问题。
【解决方案2】:

试试:

helm init --upgrade --service-account tiller

正如 Scott S 在this 评论中所建议的那样。

【讨论】:

    猜你喜欢
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 2017-10-22
    • 1970-01-01
    相关资源
    最近更新 更多