kubernetes - GKE RBAC 角色/角色绑定(bind)以访问集群中的节点状态

标签 kubernetes gcp google-kubernetes-engine

我无法获得角色绑定(bind)权,以便从运行在 GKE 上的 pod 中的应用程序中获取节点状态。

我可以从那里创建一个 pod,但不能获取节点状态。
他是我正在创造的角色:

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: node-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["nodes"]
  verbs: ["get", "watch", "list"]

这是我在执行 getNodeStatus 时遇到的错误:
{
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "nodes \"gke-cluster-1-default-pool-36c26e1e-2lkn\" is forbidden: User \"system:serviceaccount:default:sa-poc\" cannot get nodes/status at the cluster scope: Unknown user \"system:serviceaccount:default:sa-poc\"",
    "reason": "Forbidden",
    "details": {
        "name": "gke-cluster-1-default-pool-36c26e1e-2lkn",
        "kind": "nodes"
    },
    "code": 403
}

我尝试了一些小的变化,但没有成功。

GKE 上的 Kubernetes 版本是 1.8.4-gke.1

任何帮助表示赞赏,谢谢!

最佳答案

子资源权限表示为 <resource>/<subresource> ,因此在角色中,您将指定 resources: ["nodes","nodes/status"]

关于kubernetes - GKE RBAC 角色/角色绑定(bind)以访问集群中的节点状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48074039/

相关文章:

kubernetes - 如何列出对istio网关的所有传入请求?

cloud - Google Cloud Stackdriver Monitor计算引擎磁盘使用情况

kubernetes - 为什么 Kubernetes Ingress 默认在其负载均衡器上创建*两个*健康检查?

Kubernetes 配置 GCE 永久磁盘有时会失败

kubernetes - 找不到名称为 ingress-controller/ingress-default-backend 的服务

kubernetes - 有没有一种方法可以跨容器共享文件,在 kubernetes 中具有读写访问权限

kubernetes - 分iller每30秒超时,无法继续安装

cloud - 创建 gpu 谷歌实例时出错

google-cloud-platform - 在 Google Cloud Platform 中启用双因素身份验证

http - GKE 上具有 nginx-ingress 的 GCP 外部 HTTP 云负载均衡器