Kubernetes 普罗米修斯在GKE中被库伯内特斯api禁止获得403
对于普罗米修斯部署的集群角色,我有Kubernetes 普罗米修斯在GKE中被库伯内特斯api禁止获得403,kubernetes,google-kubernetes-engine,prometheus,Kubernetes,Google Kubernetes Engine,Prometheus,对于普罗米修斯部署的集群角色,我有 # ClusterRole for the deployment apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: prometheus rules: - apiGroups: [""] resources: - nodes - nodes/proxy - nodes/metrics - services
# ClusterRole for the deployment
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- nodes/metrics
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups:
- extensions
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
ServiceAccount和ClusterRoleBinding也已经就位
下面是prometheus.yml
中作业的设置,这些作业将出现403错误
- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
- job_name: 'kubernetes-nodes'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics
即使
servicecomport
和ClusterRole
已绑定在一起,我也不明白为什么我一直出现403错误。确保/var/run/secrets/kubernetes.io/servicecomport/token
文件包含正确的令牌。为此,您可以通过以下方式进入普罗米修斯吊舱:
kubectl exec-it-n--bash
和cat标记文件。然后退出pod并执行:
echo$(kubectl get secret-n-o jsonpath='{.data.token}')| base64——解码
如果令牌匹配,您可以尝试使用Postman或失眠查询Kubernetes API服务器,以查看您在
ClusterRole
中输入的规则是否正确。我建议您查询/proxy/metrics/cadvisor
和/proxy/metrics
URL确保/var/run/secrets/kubernetes.io/servicecomport/token
文件包含正确的令牌。为此,您可以通过以下方式进入普罗米修斯吊舱:
kubectl exec-it-n--bash
和cat标记文件。然后退出pod并执行:
echo$(kubectl get secret-n-o jsonpath='{.data.token}')| base64——解码
如果令牌匹配,您可以尝试使用Postman或失眠查询Kubernetes API服务器,以查看您在
ClusterRole
中输入的规则是否正确。我建议您同时查询/proxy/metrics/cadvisor
和/proxy/metrics
URL结果我有一个特定于GKE的问题,我想我会在另一个问题中提问,非常感谢。结果我有一个特定于GKE的问题,我想我会在另一个问题中提问,非常感谢。