0

我无法运行任何 helm 命令而没有错误提示我的用户被禁止。我的用户被禁止使用 kube-system 和默认命名空间。

运行类似这样的东西: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 命名空间,但我不明白为什么不能,也不知道如何让自己访问该命名空间。我已经查看了其他几篇文章和问题(例如stackoverflow 上的这篇和github上的这篇)。但是我无法尝试他们的任何解决方案,因为我总是在 helm 命令上获得一个被禁止的用户。

我会很感激任何帮助,并且非常感谢一些关于为什么我的用户根本无法访问的解释。

4

1 回答 1

2

经过大量研究和询问后,我发现我的用户实际上无权访问默认值或kube-system namespaces集群中的。我必须指定我有权访问的集群。访问权限取决于您使用的集群的设置方式。(为了安全起见,我的群组集群是这样设置的。)

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

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

有时您可能还需要指定tiller,通常通过添加如下参数:--tiller-namespace={name-of-tiller}确保检查helm docskubectl doc上的命令选项,以便您知道要使用哪些参数。

于 2020-02-04T13:40:20.800 回答