Kubectl Get All 使用牧场主权限返回大量禁止错误



我使用 rancher 来管理 k8s 集群以仅允许访问某些特定的项目/命名空间,它工作正常,除了它得到烦人的错误消息

$ 库贝特尔 得到全部 名称就绪状态重新开始老化 pod/nginx-64cf74bdcb-vmssn 1/1 运行 0 14m 名称类型 群集 IP 外部 IP 端口年龄 service/nginx NodePort 10.100.132.26 80:32318/TCP 14m 姓名就绪 最新可用年龄 deployment.apps/nginx 1/1 1 1 14m 名称 所需 当前就绪年龄 replicaset.apps/nginx-contiki-64cf74bdcb 1 1 1 14m 来自服务器的错误(禁止访问(:禁止 users.jenkins.io:用户"u-4foykbynfi"无法在命名空间"sandbox"的 API 组"jenkins.io"中列出资源"用户" 来自服务器的错误(禁止访问(:禁止 facts.jenkins.io:用户"u-4foykbynfi"无法在命名空间"sandbox"的 API 组"jenkins.io"中列出资源"事实" ...

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

如何在牧场主或 k8s 中配置为不显示此错误 msg(或退出代码(

环境

  • K8S 服务器 - v1.14.1
  • 库贝特尔客户端 - v1.13.2
  • 牧场主 - v2.2.4

实际上,当您调用kubectl get all命令时,k8s 会查看绑定到all类别的资源目录。您可以为每个自定义对象CRD添加此类别,提供特定的资源定义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>

最新更新