серверы kubernetes api, отображаемые внизу в prometheus (kube-state-metrics) - "запрещено: пользователь \" система: анонимный \ "не может получить путь \" / метрики \ "", - PullRequest
0 голосов
/ 29 октября 2019

Я новичок в k8s, Прометей. Я пытаюсь собрать метрики каждого модуля с помощью Prometheus, но не могу сделать это из-за ошибки: API ERROR .

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

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

  },
  "code": 403
}

Ответы [ 2 ]

1 голос
/ 29 октября 2019

system:anonymous означает, что неаутентифицированный пользователь пытается получить ресурс из вашего кластера, что запрещено. Вам нужно будет создать учетную запись службы, затем дать этой учетной записи некоторые полномочия через RBAC, а затем создать эту учетную запись службы для получения метрик. Все, что задокументировано.

В качестве обходного пути вы можете сделать следующее:

kubectl create clusterrolebinding prometheus-admin --clusterrole cluster-admin --user system:anonymous

Теперь обратите внимание, что это ужасная идея, если вы не играете сkubernetes. С этим разрешением вы даете всем неаутентифицированным пользователям общие разрешения в вашем кластере.

0 голосов
/ 31 октября 2019

Создайте следующие манифесты:

ServiceAccount.yaml:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
        labels:
            app.kubernetes.io/name: kube-state-metrics
        name: kube-state-metrics
        namespace: grafana

ClusterRole.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
    labels:
        app.kubernetes.io/name: kube-state-metrics
    name: kube-state-metrics
rules:
    - apiGroups:
        - ""
      resources:
          - configmaps
          - secrets
          - nodes
          - pods
          - services
          - resourcequotas
          - replicationcontrollers
          - limitranges
          - persistentvolumeclaims
          - persistentvolumes
          - namespaces
          - endpoints
      verbs:
          - list
          - watch
    - apiGroups:
        - extensions
      resources:
          - daemonsets
          - deployments
          - replicasets
          - ingresses
      verbs:
          - list
          - watch
    - apiGroups:
        - apps
      resources:
          - statefulsets
          - daemonsets
          - deployments
          - replicasets
      verbs:
          - list
          - watch
    - apiGroups:
        - batch
      resources:
          - cronjobs
          - jobs
      verbs:
          - list
          - watch
    - apiGroups:
        - autoscaling
      resources:
          - horizontalpodautoscalers
      verbs:
          - list
          - watch
    - apiGroups:
        - authentication.k8s.io
      resources:
          - tokenreviews
      verbs:
        - create
    - apiGroups:
        - authorization.k8s.io
      resources:
          - subjectaccessreviews
      verbs:
          - create
    - apiGroups:
        - policy
      resources:
          - poddisruptionbudgets
      verbs:
          - list
          - watch
    - apiGroups:
        - certificates.k8s.io
      resources:
          - certificatesigningrequests
      verbs:
          - list
          - watch
    - apiGroups:
        - storage.k8s.io
      resources:
          - storageclasses
      verbs:
          - list
          - watch
    - nonResourceURLs:
          - "/metrics"
      verbs:
          - get

ClusterRoleBinding.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
    labels:
        app.kubernetes.io/name: kube-state-metrics
    name: kube-state-metrics
roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: kube-state-metrics
subjects:
    - kind: ServiceAccount
      name: kube-state-metrics
      namespace: grafana

И сообщите вашему развертыванию Kube-State-Metrics, чтобы использовать новый ServiceAccount со следующим дополнением к вашей спецификации шаблона: serviceAccountName: kube-state-metrics.

...