我使用 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>