【问题标题】:kubectl get all returns lots of forbidden error using rancher permissionkubectl get all 使用 Rancher 权限返回很多禁止的错误
【发布时间】:2020-01-25 09:42:54
【问题描述】:

我使用 Rancher 来管理 k8s 集群,只允许访问某些特定的项目/命名空间,它工作得很好,除了它得到恼人的错误消息

$ kubectl 得到所有 名称 就绪 状态 重新开始 年龄 pod/nginx-64cf74bdcb-vmssn 1/1 运行 0 14m 名称 类型 CLUSTER-IP EXTERNAL-IP PORT(S) 年龄 服务/nginx NodePort 10.100.132.26 80:32318/TCP 14m 姓名 准备就绪 最新可用年龄 部署.apps/nginx 1/1 1 1 14m 姓名 期望的当前就绪年龄 复制集.apps/nginx-contiki-64cf74bdcb 1 1 1 14m 服务器错误(禁止):users.jenkins.io 被禁止:用户“u-4foykbynfi”无法在命名空间“sandbox”中的 API 组“jenkins.io”中列出资源“users” 服务器错误(禁止):facts.jenkins.io 被禁止:用户“u-4foykbynfi”无法在命名空间“sandbox”中的 API 组“jenkins.io”中列出资源“facts” ...

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

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

环境

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

【问题讨论】:

    标签: kubernetes kubectl rancher


    【解决方案1】:

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

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

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

    $ kubectl get all 2>/dev/null
    

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

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

    $ kubectl get all --as=<username>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2012-01-23
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多