如何获取k8s控制器管理器的指标?

问题描述 投票:0回答:2

我已经使用

kubeadm
部署了一个k8s集群,我想使用以下命令获取控制器管理器的指标:

curl -k https://localhost:10257/metrics

但出现以下错误:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {

  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/metrics\"",
  "reason": "Forbidden",
  "details": {

  },
  "code": 403
}

所以我的问题是,如何获取k8s控制器管理器的指标?

kubernetes kube-controller-manager
2个回答
0
投票

由于权限问题,这是一个禁止的错误,需要通过有效用户进行身份验证。为此,您需要创建一个服务帐户,然后通过 RBAC 为该服务帐户授予对指标路径的访问权限,然后这将使该服务帐户获取指标。

根据此角色和集群绑定文档,您需要允许指标路径(替换为 /healthz),如下所示并尝试一下。

Allow GET and POST requests to the non-resource endpoint /healthz and all subpaths (must be in a ClusterRole bound with a ClusterRoleBinding to be effective):
rules:


- nonResourceURLs: ["/healthz", "/healthz/*"] # '*' in a nonResourceURL is a suffix glob match


 verbs: ["get", "post"]

0
投票

如果您的集群使用 RBAC,则读取指标需要通过具有允许访问 /metrics 的 ClusterRole 的用户、组或 ServiceAccount 进行授权。要获取 kubernetes 控制器管理器、调度程序和其他控制平面组件,您必须获得授权用户。根据此 Kubernetes 系统组件指标

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus
rules:
  - nonResourceURLs:
      - "/metrics"
    verbs:
      - get
© www.soinside.com 2019 - 2024. All rights reserved.