无法在指定的命名空间上安装kubernetes图表

无法在指定的命名空间上安装kubernetes图表,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我已经在Google Kubernetes引擎上安装了一个集群 然后,我创建了名称空间“staging” 然后,我切换到在临时名称空间中操作 $ kubectl config use-context staging $ kubectl config current-context staging helm install --name staging stable/postgresql $ kubectl create sa tiller -n kube-system 然后,我使用helm

我已经在Google Kubernetes引擎上安装了一个集群

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

然后,我切换到在临时名称空间中操作

$ kubectl config use-context staging
$ kubectl config current-context
staging
helm install --name staging stable/postgresql
$ kubectl create sa tiller -n kube-system
然后,我使用helm on staging命名空间安装了postgresql

$ kubectl config use-context staging
$ kubectl config current-context
staging
helm install --name staging stable/postgresql
$ kubectl create sa tiller -n kube-system
但我得到了:

错误:发布转移失败:命名空间“转移”被禁止:用户“系统:serviceaccount:kube系统:默认”无法获取命名空间“转移”:未知用户“系统:serviceaccount:kube系统:默认”中的命名空间

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


谢谢您。

由于您的群集已启用RBAC,您的
舵柄
吊舱似乎没有足够的权限

tiller要求,您使用的是缺少足够RBAC权限的
default
ServiceAccount

创建ClusterRole、ClusterRoleBinding和ServiceAccount所需的一切。有了它们,你可以为你的Pod提供必要的许可

遵循以下步骤

_一,。创建ClusterRole
tiller

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
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
注意:我在这里使用了完全权限

_二,。在
kube系统
命名空间中创建ServiceAccount
tiller

$ kubectl config use-context staging
$ kubectl config current-context
staging
helm install --name staging stable/postgresql
$ kubectl create sa tiller -n kube-system
_三,。创建ClusterRoleBinding
tiller

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
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
现在,您需要在tiller部署中使用此ServiceAccount

因为您已经有了一个,请编辑它

$ kubectl edit deployment -n kube-system tiller-deploy
将PodSpec下的
serviceAccountName
设置为
tiller

阅读更多关于

的信息,尝试:


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

你能用
kubectl config get contexts
更新你的帖子吗?你的tiller pod没有获取命名空间的权限。您需要更新在toiler播客中使用的角色谢谢!这是用户“system:servicecomport:kube system:default”无法在我遇到的名称空间问题中获取名称空间的唯一解决方案。对于未来的读者,当@aerokite撰写有关创建ClusterRole tiller和ClusterRoleBinding tiller的文章时,将其yaml复制并粘贴到两个不同的文件中,然后在每个文件上调用
kubectl create-f
,我无法理解tiller部署部分的编辑,因为我在PodSpec下找不到serviceAccountName。我确实在网页上找到了
helminit--upgrade--service account tiller
,这似乎解决了最后一个问题。