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