首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用prometheus在k8集群外监视Kubernetes集群

使用prometheus在k8集群外监视Kubernetes集群
EN

Stack Overflow用户
提问于 2019-10-22 11:27:42
回答 3查看 2.9K关注 0票数 1
  • 我们有kubernetes集群,其中有服务帐户"kube",名称空间“监视”,并创建了用于监视集群的集群角色绑定。
  • 我们在集群外的linux系统(prem上)上安装了prometheus,并且使用"root“安装。
  • 当我试图使用k8和用户token (由kubernetes admin提供)使用https连接到ca.crt集群时,它会引发多个错误。

错误信息:

代码语言:javascript
运行
复制
component="discovery manager scrape" msg="Cannot create service discovery" err="unable to use specified CA cert /root/prometheus/ca.crt" type=*kubernetes.SDConfig

component="discovery manager scrape" msg="Cannot create service discovery" err="unable to use specified CA cert /root/prometheus/ca.crt" type=*kubernetes.SDConfig

普罗米修斯配置:

代码语言:javascript
运行
复制
  - job_name: 'kubernetes-apiservers'
    scheme: https
    tls_config:
      ca_file: /root/prometheus/ca.crt
    bearer_token_file: /root/prometheus/user_token
    kubernetes_sd_configs:
    - role: endpoints
      api_server: https://example.com:1234
      bearer_token_file: /root/prometheus/user_token
      tls_config:
        ca_file: /root/prometheus/prometheus-2.12.0.linux-amd64/ca.crt
    relabel_configs:
    - source_labels: [monitoring, monitoring-sa, 6443]
      action: keep
      regex: default;kubernetes;https

  - job_name: 'kubernetes-nodes'
    scheme: https
    tls_config:
        ca_file: /root/prometheus/ca.crt
    bearer_token_file: /root/prometheus/user_token

    kubernetes_sd_configs:
    - role: node
      api_server: https://example.com:1234
      bearer_token_file: /root/prometheus/user_token
      tls_config:
        ca_file: /root/prometheus/ca.crt
    relabel_configs:
    - action: labelmap
      regex: __meta_kubernetes_node_label_(.+)
    - target_label: __address__
      replacement: https://example.com:1234
    - source_labels: [__meta_kubernetes_node_name]
      regex: (.+)
      target_label: __metrics_path__
      replacement: /api/v1/nodes/${1}/proxy/metrics
EN

回答 3

Stack Overflow用户

发布于 2019-10-23 12:31:52

你面临的主要问题是:"unable to use specified CA cert /root/prometheus/ca.crt"

最近有人面临着同样的问题:https://github.com/prometheus/prometheus/issues/6015#issuecomment-532058465

他通过重新安装新版本解决了这个问题。

版本2.13.1已经发布。尝试安装最新版本,它也可能解决您的问题。

票数 2
EN

Stack Overflow用户

发布于 2020-10-29 14:59:31

您的ca.crt很可能仍然是base64格式,因为在描述秘密时,秘密是以这种方式编码的,正如解释的这里那样。

票数 2
EN

Stack Overflow用户

发布于 2019-11-07 04:12:03

也许您的ca.crt有一些错误,请检查您的ca cert文件,确保该文件格式如下:

代码语言:javascript
运行
复制
-----BEGIN CERTIFICATE-----
xxxxx
-----END CERTIFICATE-----

我认为您的ca.crt是由kubectl get serviceaccount -o yaml获得的,但是这是一个使用kubernetes集群的公钥,因此,如果您想获得令牌,可以使用新的Deployment在yaml文件中指定serviceAccountName,如下所示:

代码语言:javascript
运行
复制
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: test
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test
        version: v1
    spec:
      serviceAccountName: prometheus
      containers:
      - name: test
        image: alpine
        imagePullPolicy: Always
        command: ["ping", "127.0.0.1"]
      imagePullSecrets:
        - name: harbor-secret
      restartPolicy: Always

然后,把你的tokenca.crt放在/var/run/secrets/kubernetes.io/serviceaccount/下面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58503240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档