【问题标题】:kubernetes: how to set "top node" and "top pod" permissions?kubernetes:如何设置“top node”和“top pod”权限?
【发布时间】:2020-05-19 09:58:36
【问题描述】:

希望得到一些指点,我有一个问题:我需要向拥有 Clusterrole:view 的用户添加什么角色/权限才能让该用户在 kubectl 中使用“top node”和“top pod”命令?我们在 1.15.7 集群 (AKS) 上使用 kubectl 版本 1.15.x(客户端),但我不确定这是否是相关信息。 我试图在 k8s 文档中找到这个,但找不到权限引用描述,只有一些示例和指南。

提前致谢!

问候,卢多

【问题讨论】:

  • 也许更适合 devops SE。
  • 感谢您的建议!我并没有真正意识到 SE 和 SO 之间的区别,但这使这一点更加清晰。
  • 我的错误信息是,顺便说一句,Error from server (Forbidden): pods.metrics.k8s.io <pod name> is forbidden: User "<user>" cannot get resource "pods" in API group "metrics.k8s.io" in the namespace "default"

标签: kubernetes permissions roles


【解决方案1】:

top nodetop pod 没有特定权限。权限是关于你是否可以做get nodesget pods。如果有get nodesget pods 的权限,那么您也应该能够top nodestop pods。执行get nodesget pods 的权限是通过kubernetes 中的RBAC 定义的。

度量服务器只是通过从不同来源(如 kubelet)收集和聚合来公开不同资源(如 pod、节点)的度量。这就是对指标本身没有权限的原因,而是对您想要查看指标的资源的权限。

kubectl top pods 时调用的 API 是这个

GET https://API-SERVER-IP:6443/apis/metrics.k8s.io/v1beta1/namespaces/default/pods

因此,当您定位到默认命名空间时,您只能在默认命名空间中查看 pod 的指标。现在是否可以在默认命名空间中获取 pod 由 RBAC 管理。

【讨论】:

  • 奇怪的是我可以运行kubectl get podkubectl get node,但是kubectl top node' or 'top pod 是被禁止的。是否有一些额外的指标标志(例如日志资源:“pods/logs”。
  • 没关系,我的 apiGroup 错了。它是" ",但是当我将其更正为“metrics.k8s.io”时,当我在["pods", "nodes"] 上明确设置["get", "watch", "list"] 动词时,它就起作用了。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2014-04-04
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多