无法在指定的命名空间

时间:2018-02-01 06:56:55

标签: kubernetes kubernetes-helm

我在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

然后,我在staging namespace

上使用helm安装了postgresql
helm install --name staging stable/postgresql

但我得到了:

  

错误:发布分段失败:命名空间" staging"禁止使用:用户" system:serviceaccount:kube-system:default"无法在名称空间中获取名称空间" staging&#34 ;:未知用户" system:serviceaccount:kube-system:default"

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

谢谢你..

2 个答案:

答案 0 :(得分:15)

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

您正在使用default ServiceAccount,它缺少足够的RBAC权限,分蘖需要。

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

按照以下步骤

_1。创建ClusterRole tiller

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

注意:我在这里使用了完全许可。

_2。在tiller命名空间

中创建ServiceAccount kube-system
$ 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

下将serviceAccountName设置为tiller

详细了解RBAC

答案 1 :(得分:0)

尝试:

helm init --upgrade --service-account tiller

由Scott S在this评论中建议。