博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用nginx统一代理dashboard,grafana,Prometheus二级目录访问
阅读量:7297 次
发布时间:2019-06-30

本文共 5568 字,大约阅读时间需要 18 分钟。

k8s上的这些管理工具必不可少,可以统一在nginx下的二级目录下。

ingress是好,但我们不方便使用内部域名,相信么。。。:)

一,prometheus改造

在prometheus的deployment中传递一下—web.external-url参数。如下所示:

- name: prometheus        image: xxx/3rd_part/prometheus:v2.4.3        imagePullPolicy: IfNotPresent        args:          - '--storage.tsdb.path=/prometheus/data/'          - '--storage.tsdb.retention=1d'          - '--config.file=/etc/prometheus/prometheus.yaml'          - '--web.enable-lifecycle'          - '--web.external-url=/prometheus'        ports:        - name: webui          containerPort: 9090        resources:          requests:            cpu: 400m            memory: 500M        #  limits:        #    cpu: 500m        #    memory: 500M

二,grafana改造

在grafana的deployment中,env环境变量更新GF_SERVER_ROOT_URL的值。如下所示:

containers:      - name: grafana        image: xxx/3rd_part/grafana/grafana:5.3.1        imagePullPolicy: IfNotPresent        ports:        - containerPort: 3000          name: grafana        env:        - name: GF_SECURITY_ADMIN_USER          value: [usr]        - name: GF_SECURITY_ADMIN_PASSWORD          value: [pwd]        - name: GF_SERVER_ROOT_URL          value: "%(protocol)s://%(domain)s:%(http_port)s/grafana"        resources:          limits:            cpu: 100m            memory: 256Mi          requests:            cpu: 100m            memory: 256Mi

三,dashboard改造

dashboard不再使用443端口,使用最简单的方式来达到目的。其yaml文件如下所示:

# ------------------- Dashboard Service Account ------------------- #apiVersion: v1kind: ServiceAccountmetadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kube-system---# ------------------- Dashboard Deployment ------------------- #kind: DeploymentapiVersion: apps/v1beta2metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kube-systemspec:  replicas: 1  revisionHistoryLimit: 3  selector:    matchLabels:      k8s-app: kubernetes-dashboard  template:    metadata:      labels:        k8s-app: kubernetes-dashboard    spec:      containers:      - name: kubernetes-dashboard        image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3        ports:        - containerPort: 9090          protocol: TCP        livenessProbe:          httpGet:            path: /            port: 9090          initialDelaySeconds: 30          timeoutSeconds: 30      serviceAccountName: kubernetes-dashboard      # Comment the following tolerations if Dashboard must not be deployed on master      tolerations:      - key: node-role.kubernetes.io/master        effect: NoSchedule---# ------------------- Dashboard Service ------------------- #kind: ServiceapiVersion: v1metadata:  labels:    k8s-app: kubernetes-dashboard  name: kubernetes-dashboard  namespace: kube-systemspec:  type: NodePort  ports:    - port: 80      targetPort: 9090      nodePort: 3xxxxx  selector:    k8s-app: kubernetes-dashboard

四,nginx配置

1,  用htpasswd命令生成包含用户名和加密的密码文件nginx_passwd。

2,  将nginx配置和nginx_passwd作成configmap文件。

apiVersion: v1kind: ConfigMapmetadata:  name: proxy-nginx  namespace: kube-systemdata:  default.conf: |-    upstream prometheus {        server prometheus:9090;    }    upstream grafana {        server monitoring-grafana:80;    }    upstream dashboard {        server [master_ip]:[3xxxx];    }    server {        listen       80;        server_name  localhost;        location / {            root   /usr/share/nginx/html;            index  index.html index.htm;        }        location /check {            default_type text/plain;            return 200 "serving is ok!";        }        location /status {            stub_status on;            access_log off;        }                location  /prometheus {            proxy_pass http://prometheus;proxy_set_header   Host $host;        }             location /grafana {            proxy_pass http://grafana;            rewrite  ^/grafana/(.*)  /$1 break;            proxy_set_header   Host $host;        }           location /dashboard {            auth_basic            "Password please";            auth_basic_user_file  /etc/nginx/conf.d/nginx_passwd;            proxy_pass  http://dashboard;            rewrite  ^/dashboard/(.*)  /$1 break;            proxy_set_header   Host $host;        }        # redirect server error pages to the static page /50x.html        # chengang from k8s config map file        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   /usr/share/nginx/html;        }    }  nginx_passwd: |-        user:${password}

3,  制作nginx的deployment和service文件。

挂载了nginx的configmap文件。在其中加了一个[3xxxx]端口,这就是其它应用的入口。

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: proxy-nginx  namespace: kube-systemspec:  replicas: 1  template:    metadata:      labels:        k8s-app: proxy-nginx    spec:      containers:      - name: nginx        image: xxx/official_hub/nginx:1.13-alpine        imagePullPolicy: IfNotPresent        ports:        - containerPort: 80          protocol: TCP        volumeMounts:        - name: nginx-conf          mountPath: /etc/nginx/conf.d      volumes:      - name: nginx-conf        configMap:          name: proxy-nginx      nodeSelector:        node-role.kubernetes.io/master: ""      tolerations:      - key: "node-role.kubernetes.io/master"        effect: "NoSchedule"---apiVersion: v1kind: Servicemetadata:  name: proxy-nginx  namespace: kube-systemspec:  type: NodePort  ports:  - port: 80    targetPort: 80    nodePort: [3xxxx]  selector:        k8s-app: proxy-nginx

五,测试URL

 

http://[master_ip:3xxxx]/grafana

http://[master_ip:3xxxx]/prometheus
http://[master_ip:3xxxx]/dashboard

 

转载地址:http://dnfnm.baihongyu.com/

你可能感兴趣的文章
netty-socketio使用namespace
查看>>
在div中设置文字与内部div垂直居中
查看>>
JS入门篇(1)
查看>>
jfeechart
查看>>
前端面试总结
查看>>
<script type="text/template">是干什么的,为什么要把html写在js中? 这是什么编程语言风格,都能这样用吗?...
查看>>
hdu2196(树形dp)
查看>>
编辑框CEdit自动换行简单设置
查看>>
华为实习日记——第十九天
查看>>
awk用法小结
查看>>
你有没有忽略TextField的leftView这个属性
查看>>
A和B两个数组,删除B中与A重复的元素
查看>>
方格广搜
查看>>
match
查看>>
今日工作情况2
查看>>
一个学习简单网络技术的网站
查看>>
使用JQuery的get或post方法时出现页面没法手动刷新?
查看>>
MongoDB进阶
查看>>
python3csv与xlsx文件操作模块(csv、xlsxwriter)
查看>>
开启线程方式
查看>>