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

kar*_*ina 8 kubernetes kubernetes-helm

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

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

$ kubectl get namespaces
default       Active    26m
kube-public   Active    26m
kube-system   Active    26m
staging       Active    20m
Run Code Online (Sandbox Code Playgroud)

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

$ kubectl config use-context staging
$ kubectl config current-context
staging
Run Code Online (Sandbox Code Playgroud)

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

helm install --name staging stable/postgresql
Run Code Online (Sandbox Code Playgroud)

但我得到了:

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

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

谢谢你..

aer*_*ite 19

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

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

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

按照以下步骤操作

_1.创建ClusterRoletiller

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
Run Code Online (Sandbox Code Playgroud)

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

_2.tillerkube-system命名空间中创建ServiceAccount

$ kubectl create sa tiller -n kube-system
Run Code Online (Sandbox Code Playgroud)

_3.创建ClusterRoleBindingtiller

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
Run Code Online (Sandbox Code Playgroud)

现在,您需要在分蘖部署中使用此ServiceAccount.

正如您已有的那样,编辑它

$ kubectl edit deployment -n kube-system tiller-deploy
Run Code Online (Sandbox Code Playgroud)

设置serviceAccountNametillerPodSpec下

阅读更多关于RBAC的信息