使用REST_API的Openshift监控

问题描述

我正在尝试使用Openshift REST-API来获取我的cron-jobs的状态。我是我的命名空间的管理员,但是我没有群集访问权限,因此我无法在群集级别执行任何操作。

现在,要获取状态,我首先创建一个角色:

# oc create role podreader --verb=get --verb=list --verb=watch --resource=pods,cronjobs.batch,jobs.batch
role.rbac.authorization.k8s.io/podreader created

但是当我尝试向服务帐户添加角色时,它会失败。

# oc create serviceaccount nagios 
# oc policy add-role-to-user podreader system:serviceaccount:uc-immoscout-dev:nagios
Warning: role 'podreader' not found
Error from server (NotFound): clusterroles.rbac.authorization.k8s.io "podreader" not found

我的主要目的是获取我计划的cron-jobs,jobs和pods的状态。

解决方法

您必须将--role-namespace=namespace-of-role添加到oc policy add-role-to-user命令中,否则该角色将被视为群集角色。

从文档中

-role-namespace ='':角色所在的名称空间:空表示在群集策略中定义的角色