Como por discussão no ingresso @ JorritSalverda; link
Como o GKE não permite que você obtenha certificados de cliente que permitem que você se autentique com o kubelet, a melhor solução para os usuários no GKE parece usar o servidor da API do kubernetes como um proxy para os nós.
Para fazer isso (citando @JorritSalverda);
"Para o meu servidor Prometheus em execução dentro do GKE, agora ele está sendo executado com a seguinte reclassificação:
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc.cluster.local:443
- target_label: __scheme__
replacement: https
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics
E o seguinte ClusterRole vinculado à conta de serviço usada pelo Prometheus:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
Como o cluster GKE ainda tem um fallback do ABAC no caso de o RBAC falhar, ainda não tenho 100% de certeza de que isso abrange todas as permissões necessárias.