云原生监控数据查询地址如何暴露出公网

| 2019-05-17

prometheus现在是主流的监控k8s方案,各大云厂商也都有托管的k8s服务,为了更好的对托管k8s集群监控,也推出了托管的prometheus监控服务,腾讯云上就推出了腾讯云云原生监控服务(Tencent Prometheus Service,TPS)下面简称TPS,TPS
 
可以一键部署prometheus到后端弹性集群上,然后你可以关联监控你的tke集群来进行监控。
 
腾讯云的TPS服务后端用的是thanos架构,为了能更加方便查询监控指标,提供了thanos query前端页面地址用来查询监控数据,但是这个地址只提供了内网访问的,很多时候,我们在pc端是无法直接访问vpc的内网地址的,这样查询数据就非常不方便,下面我们来说说如何暴露下TPS的数据查询地址到公网。
 
其实方案很简单,就是在和TPS同vpc下的tke集群中部署一个nginx反向代理出现就行,然后为nginx配置一个nodeport或者公网的clb类型的service即可,具体配置步骤如下。
 
1. 查询云原生监控实例数据查询地址
云原生监控的数据查询地址,可以在实例的基本信息页面查询,Prometheus数据查询地址就是thanos query的地址

2. 创建nginx转发配置文件

创建一个configmap配置default.conf文件用来转发TPS的thanos query查询地址,注意proxy_pass后面填写自己实际的内网查询地址,下一步挂载这个configmap到pod里面即可

apiVersion: v1
data:
  default.conf: |-
    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;

        #access_log  /var/log/nginx/host.access.log  main;

        location / {
            proxy_pass http://10.0.0.234:9090/;
            proxy_set_header X-Real-IP $remote_addr;
            client_max_body_size    1000m;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
  
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
kind: ConfigMap
metadata:
  name: nginx-cm
  namespace: monitor

3. 创建nginx的workload

创建一个nginx的工作负载,然后将上一步的配置挂载到容器的default.conf文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: tps-thanos-nginx
    qcloud-app: tps-thanos-nginx
  name: tps-thanos-nginx
  namespace: monitor
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: tps-thanos-nginx
      qcloud-app: tps-thanos-nginx
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      labels:
        k8s-app: tps-thanos-nginx
        qcloud-app: tps-thanos-nginx
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        name: tps-thanos-nginx
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 250m
            memory: 256Mi
        securityContext:
          privileged: false
        volumeMounts:
        - mountPath: /etc/nginx/conf.d/default.conf
          name: vol
          subPath: default.conf
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: qcloudregistrykey
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          name: nginx-cm
        name: vol

4. 生成service绑定workload

创建servic绑定后端的workload,如果不想花钱买公网的clb,可以用nodeport类型的svc,通过节点公网ip和nodeport访问。

apiVersion: v1
kind: Service
metadata:
  name: tps-thanos-nginx
  namespace: monitor
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: 80-80-tcp
    nodePort: 31642
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    k8s-app: tps-thanos-nginx
    qcloud-app: tps-thanos-nginx
  sessionAffinity: None
  type: LoadBalancer

5. ingress暴露域名提供访问

如果集群部署了nginx-ingress,也可以用nginx-ingress来暴露一个域名来访问,当然也可以用tke提供的负载均衡类型ingress暴露域名提供访问。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: ingress
  name: tps-thanos-ingress
  namespace: monitor
spec:
  rules:
  - host: tps-thanos.tke.niewx.cn
    http:
      paths:
      - backend:
          serviceName: tps-thanos-nginx
          servicePort: 80
        path: /

6. 公网访问查询地址

浏览器输入公网clb的vip访问TPS的prometheus数据查询地址

浏览器输入节点公网ip和nodeport访问TPS的prometheus数据查询地址

浏览器域名访问TPS的prometheus数据查询地址

后面我们就可以在浏览器通过ui页面来查询prometheus的监控数据了。

编辑:航网科技 来源:腾讯云 本文版权归原作者所有 转载请注明出处

在线客服

微信扫一扫咨询客服


全国免费服务热线
0755-36300002

返回顶部