kubectl使用rancher权限获取所有返回的许多禁止错误

时间:2019-09-25 08:31:14

标签: kubernetes kubectl rancher

我使用rancher来管理k8s集群,使其仅允许访问某些特定的项目/名称空间,除了收到令人讨厌的错误消息之外,它的工作情况还不错

$ kubectl get all
NAME                                 READY   STATUS    RESTARTS   AGE
pod/nginx-64cf74bdcb-vmssn           1/1     Running   0          14m

NAME                    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/nginx           NodePort   10.100.132.26           80:32318/TCP   14m

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx           1/1     1            1           14m

NAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-contiki-64cf74bdcb   1         1         1       14m
Error from server (Forbidden): users.jenkins.io is forbidden: User "u-4foykbynfi" cannot list resource "users" in API group "jenkins.io" in the namespace "sandbox"
Error from server (Forbidden): facts.jenkins.io is forbidden: User "u-4foykbynfi" cannot list resource "facts" in API group "jenkins.io" in the namespace "sandbox"
...

该用户只想检查其自己的名称空间上的所有资源,尽管它没有其他API组的权限,但是我们可以跳过此检查吗?

如何在rancher或k8s中配置为不显示此错误消息(或退出代码)

env

  • k8s服务器-v1.14.1
  • kubectl客户端-v1.13.2
  • 牧场主-v2.2.4

1 个答案:

答案 0 :(得分:1)

实际上,当您调用kubectl get all命令时,k8s会浏览绑定到all类别的资源目录。您可以为每个自定义对象CRD添加此类别,并提供here中所述的特定CustomResourceDefinition资源定义。

但是,您不能更改kubectl get命令的方法,只能应用某些过滤器或自定义打印输出。

如果您的目标仅是将kubectl get all输出到stdout以避免错误记录,则可以将stderr重定向到/dev/null

$ kubectl get all 2>/dev/null

甚至可以通过echo $?获取上一个命令的退出代码。

您还可以在--as命令中添加kubectl get标志,以模拟资源所有者:

$ kubectl get all --as=<username>