我已经在端口 443 上安全地安装了 Prometheus-adapter 以及 k3s 附带的默认指标服务器。
不幸的是,当我查询 custom.metrics.k8s.io 时,我没有得到任何资源
$ kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1" | jq .
{
"kind": "APIResourceList",
"apiVersion": "v1",
"groupVersion": "custom.metrics.k8s.io/v1beta1",
"resources": []
}
当我查看 Prometheus-adapter 的日志时,我得到无法更新所有指标的列表:无法获取查询的指标...:x509:证书对本地主机有效,本地主机,而不是指标服务器.kube-系统
我该如何解决这个问题?
最佳答案
为了解决这个问题,我必须创建 separate certificate对于指标服务器和适配器。适配器还有一个 issue关于添加忽略未合并的证书验证的功能。
对于指标服务器和证书请求,我使用了以下内容:
{
"hosts": [
"prometheus-adapter",
"prometheus-adapter.monitoring",
"prometheus-adapter.monitoring.svc",
"prometheus-adapter.monitoring.pod",
"prometheus-adapter.monitoring.svc.cluster.local",
"prometheus-adapter.monitoring.pod.cluster.local",
"<pod ip>",
"<service ip>"
],
"CN": "prometheus-adapter.monitoring.pod.cluster.local",
"key": {
"algo": "ecdsa",
"size": 256
},
}
{
"hosts": [
"metrics-server",
"metrics-server.kube-system",
"metrics-server.kube-system.svc",
"metrics-server.kube-system.pod",
"metrics-server.kube-system.svc.cluster.local",
"metrics-server.kube-system.pod.cluster.local",
"<service ip>",
"<pod ip>"
],
"CN": "metrics-server.kube-system",
"key": {
"algo": "ecdsa",
"size": 256
},
}
对于 ca,您可以按照指示创建证书颁发机构或使用 Kubernetes 签名者 here 此处唯一值得注意的一点是,如果您使用任何一个签名者,您应该自己将 ca 包安装到您的部署中。
最后,将 tls key 和 ca 包安装到您的部署中。
extraArguments:
- --tls-cert-file=/var/run/serving-cert/tls.crt
- --tls-private-key-file=/var/run/serving-cert/tls.key
- --client-ca-file=/etc/ssl/certs/ca.crt
关于kubernetes - 无法从 Prometheus-Adapter 访问默认的 k3s 指标服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74010952/