我在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安装了postgresqlhelm install --name staging stable/postgresql
但我得到了:
错误:发布分段失败:命名空间" staging"禁止使用:用户" system:serviceaccount:kube-system:default"无法在名称空间中获取名称空间" staging&#34 ;:未知用户" system:serviceaccount:kube-system:default"
这是什么意思.. ??如何让它工作.. ??
谢谢你..
答案 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
命名空间
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)