【发布时间】:2017-09-03 10:43:16
【问题描述】:
我将我的 GKE API 服务器升级到 1.6,并且正在将节点升级到 1.6,但遇到了障碍...
我有一个 prometheus 服务器(版本 1.5.2)在 Kubernetes 部署管理的 Pod 中运行,其中有几个节点运行版本 1.5.4 Kubelet,一个新节点运行 1.6。
Prometheus 无法连接到新节点——它的指标端点返回 401 Unauthorized。
这似乎是一个 RBAC 问题,但我不确定如何处理。我找不到关于 Prometheus 服务器需要什么角色的文档,甚至找不到如何将它们授予服务器的文档。
从 coreos/prometheus-operator 存储库中,我能够拼凑出一个我可能期望工作的配置:
apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources:
- configmaps
verbs: ["get"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: prometheus
namespace: default
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus
namespace: default
secrets:
- name: prometheus-token-xxxxx
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: prometheus-prometheus
component: server
release: prometheus
name: prometheus-server
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: prometheus-prometheus
component: server
release: prometheus
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: prometheus-prometheus
component: server
release: prometheus
spec:
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccount: prometheus
serviceAccountName: prometheus
...
但 Prometheus 仍然得到 401。
更新:正如 Jordan 所说,这似乎是一个 Kubernetes 身份验证问题。在此处查看新的、更集中的问题; https://serverfault.com/questions/843751/kubernetes-node-metrics-endpoint-returns-401
【问题讨论】:
标签: kubernetes google-kubernetes-engine prometheus