所有Helm命令上的“禁止用户错误”。如何授予用户访问Helm的权限?

时间:2020-01-31 20:01:09

标签: kubernetes namespaces kubernetes-helm kubectl helmfile

如果没有错误说我的用户被禁止,我将无法运行任何helm命令。我的用户被禁止使用kube系统和默认名称空间。

运行类似这样的内容:kubectl create serviceaccount --namespace kube-system tiller 导致此错误:

Error from server (Forbidden): serviceaccounts is forbidden: User "{my-user}" cannot create resource "serviceaccounts" in API group "" in the namespace "kube-system"

运行此命令:kubectl get serviceaccount [-n kube-system]导致此错误:

Error from server (Forbidden): serviceaccounts "[-n" is forbidden: User "cn188854" cannot get resource "serviceaccounts" in API group "" in the namespace "default" Error from server (Forbidden): serviceaccounts "kube-system]" is forbidden: User "cn188854" cannot get resource "serviceaccounts" in API group "" in the namespace "default"

运行此命令:helm list导致此错误:

Error: pods is forbidden: User "{my-user}" cannot list resource "pods" in API group "" in the namespace "kube-system"

我猜我的用户没有访问kube-system命名空间的权限,但是我不知道为什么不这样做,而且我也不知道如何授予自己对那个命名空间的访问权限。我已经审查了其他几个帖子和问题(例如this one on stackoverflowthis one on github)。但是我无法尝试他们的任何解决方案,因为我总是在helm命令上使用禁止的用户。

我将非常感谢您的帮助,也非常感谢您对为什么我的用户根本没有访问权限的一些解释。

1 个答案:

答案 0 :(得分:1)

经过大量研究并四处询问,我发现我的用户实际上无法访问群集中的默认值或kube-system namespaces。我必须指定我可以访问的集群。 访问权限取决于您使用的群集的设置方式。 (为安全起见,我的网上论坛群集是通过这种方式设置的。)

因此,如果其他任何人都遇到此问题,请检查您正在使用的群集以及拥有的权限。如果像我一样需要指定namespace,则可以将此参数添加到命令中:-n={name-of-namespace-you're-using}

例如,我无法运行kubectl get pods,因为我无权访问default namespace。但是,如果我指定一个namespace确实可以访问,例如:kubectl get pods -n={name-of-namespace},那么我将能够看到我的吊舱。

有时,您可能还需要指定tiller,通常可以通过添加如下参数来实现:--tiller-namespace={name-of-tiller}确保检查helm docskubectl doc,这样您就知道要使用哪些参数。

相关问题