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: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system

---
# ------------------- Dashboard Deployment ------------------- #
kind: Deployment
apiVersion: apps/v1beta2
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  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: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  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: v1
kind: ConfigMap
metadata:
  name: proxy-nginx
  namespace: kube-system
data:
  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/v1beta1
kind: Deployment
metadata:
  name: proxy-nginx
  namespace: kube-system
spec:
  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: v1
kind: Service
metadata:
  name: proxy-nginx
  namespace: kube-system
spec:
  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

使用nginx统一代理dashboard,grafana,Prometheus二级目录访问的更多相关文章

  1. 使用nginx反向代理处理前后端跨域访问

    本文主要解决:使用nginx反向代理处理前后端跨域访问的问题 1.何为跨域访问? 以下类型为跨域访问 1)不同域名间访问 www.zuiyoujie.com和www.baidu.com 2)同域名不同 ...

  2. Thinkphp在nginx设置同域名二级目录访问

    Thinkphp在nginx设置同域名二级目录访问,是因为最近弄一个小程序项目,要https,但是只有单个域名,不能通配域名,所有只好用二级目录,thinkphp二级目录访问要怎么设置呢 下面是ngi ...

  3. 修改vue的配置项支持生产环境下二级目录访问的方法

    本文主要记录如何配置vue的打包文件配置项,使打包后的文件可以支持二级目录的访问. 1.常规打包 在实际的项目中,我们通常都使用 npm run build 直接打包文件后丢到服务器上访问 打包后的文 ...

  4. vue通过(NGINX)部署在子目录或者二级目录实践

    1.修改 router/index.js 添加一行 base: 'admin', 2.然后修改 config/index.js 增加一行 const assetsPublicPath = '/admi ...

  5. nginx配置ThinkPHP5二级目录访问

    可以通过 http://www.mracale.com/项目名/模块名/方法名 进行访问 第一步 首先,你要确保在不配置二级目录的情况下,可以通过浏览器访问到.例如:http://www.mracal ...

  6. apache虚拟主机配置: 设置二级目录访问跳转

    <VirtualHost *:> DocumentRoot "d:/www/abc" ServerName www.abc.com Alias /course &quo ...

  7. 搬运 centos7.2 apache 绑定二级目录 访问依然是apache页面

    <VirtualHost *:80>ServerName xx.comDocumentRoot /var/www/html/xx</VirtualHost>

  8. Nginx做代理

    0 查看日志 tail -f /var/log/nginx/access.log 1 Nginx代理配置语法 1.Nginx代理配置语法 Syntax: proxy_pass URL; Default ...

  9. 由Nginx反向代理引出的JCaptcha验证码验证失败的问题

    搜索关键字: 1)Windows本地开发正常,部署到Linux远程服务器上JCaptcha验证失败 2)Linux远程服务器上JCpatcha验证失败 3)Nginx反向代理后JCaptcha验证失败 ...

随机推荐

  1. NOI&&NOIP知识点集萃

    更新日志 \(update:2019-3-4\) 更新了自为风月马前卒的后缀数组(省选不到一个月了,我才开始学后缀数组怕是要凉凉) \(update:2019-2-21\) 更新了一篇李超线段树的讲解 ...

  2. Maven父子项目配置-多模块(multi-modules)结构

    Maven创建父子项目,这个项目指的是eclipse中的project,idea中的module.使用idea创建的话很简单,可以直接选择项目的父亲,这些网上有很多资料的. 这里说一下创建父子项目时, ...

  3. Different between Telnet/SSH/FTP

    http://www.differencebetween.net/category/technology/protocols-formats/ Telnet vs SSH Secure Shell, ...

  4. 【Revit API】脱离中心文件

    话不多说,直接代码,整个过程不需要发起Transaction OpenOptions op = new OpenOptions(); op.Audit = true; //是否需要核查 op.Deta ...

  5. 解题:NOI 2014 随机数生成器

    题面 为什么NOI2014有模拟题=.=??? 按题意把序列生成出来之后,对每一行维护一个能取到的最左侧和能取到的最右侧.从小到大$O(n^2)$枚举数字看看能否填入,能填入则暴力$O(n)$更新信息 ...

  6. js判断是否为空

    http://dushanggaolou.iteye.com/blog/1293803 1.<input type="hidden" id="key" n ...

  7. node.js浅谈

    相信大家对node.js也很不陌生吧,现在我来总结一下常用的吧~ 我们Web全栈工程师最多的就是用Node作为后台了,Node.js虽然可以作为后台语言,但是相对于Java那些老牌后台语言真是一点优势 ...

  8. vue-router 编程式导航

    借助vue-router的实例方法,通过编写代码来实现导航的切换: back:回退一步 forward:前进一步 go:指定前进回退步数 push:导航到不同url,向history栈添加一个新的记录 ...

  9. Hive SQL 编译过程

    转自:http://www.open-open.com/lib/view/open1400644430159.html Hive跟Impala貌似都是公司或者研究所常用的系统,前者更稳定点,实现方式是 ...

  10. 给radio加自己的样式(图片)

    $('.choice').click(function() { var display1 = $("#check").prop("checked"); cons ...