码迷,mamicode.com
首页 > 其他好文 > 详细

K8s的监控之三种可视化UI界面部署

时间:2020-09-04 17:32:56      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:roo   protocol   port   上层   das   status   文件配置   inf   erro   

博文大纲: 一、部署dashboard的Web-UI界面 二、部署weave-scope监控k8s集群 三、部署Prometheus服务

一、部署dashboard的Web-UI界面

1、下载yaml文件配置并执行
技术图片
技术图片
技术图片
技术图片

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
[root@master ~]# vim recommended.yaml +39  //定位到39行,修改其提供的service资源
---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort   //添加类型为NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31001    //映射到宿主机的端口为31001
  selector:
    k8s-app: kubernetes-dashboard
//修改完保存退出即可

[root@master ~]# kubectl apply -f recommended.yaml   //执行yaml文件
[root@master ~]# kubectl  get  pod -n kubernetes-dashboard   //确认其正常运行
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-76679bc5b9-nzcl9   1/1     Running   0          55s
kubernetes-dashboard-65bb64d6cb-n95bf        1/1     Running   0          55s

[root@master ~]# kubectl  get  svc -n kubernetes-dashboard  
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.107.61.31     <none>        8000/TCP        92s
kubernetes-dashboard        NodePort    10.107.129.197   <none>        443:31001/TCP   92s
//查看service资源,也属正常状态,并且已经映射了我们指定的端口

2、客户端通过浏览器访问
注:该版本之前的dashboard,必须使用火狐浏览器才可访问,可能是版本更新解决了这一问题,所以本次版本没有什么硬性的要求。
技术图片
技术图片
方法一:使用Token的方式登录

[root@master ~]# kubectl create serviceaccount dashboard-admin -n kube-system
//创建一个dashboard的管理用户
[root@master ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
//将创建的dashboard用户绑定为管理用户

[root@master ~]# kubectl get secrets -n kube-system | grep dashboard
dashboard-admin-token-h7w7r                      kubernetes.io/service-account-token   3      12s
//获取刚刚创建的用户对应的token名称

[root@master ~]# kubectl  describe  secrets  -n  kube-system  dashboard-admin-token-h7w7r 
//查看token的详细信息

技术图片
技术图片
技术图片
注:出现以上页面表示部署成功,并且监控到了各个节点的信息!!!

方法二:使用kubeconfig的方式登录

[root@master ~]# kubectl get secrets -n kube-system | grep dashboard  //查看刚才创建的token
dashboard-admin-token-h7w7r                      kubernetes.io/service-account-token   3      13m

[root@master ~]#  kubectl describe secrets -n kube-system  dashboard-admin-token-h7w7r 
//查看token的详细信息,会获取token

[root@master ~]# DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-h7w7r -o jsonpath={.data.token} | base64 -d)
//将token的信息生成一个变量

[root@master ~]# kubectl config set-cluster kubernets --server=192.168.45.129:6443  --kubeconfig=/root/.dashboard-admin.conf
//将k8s集群的配置信息写入到一个文件中,文件可自定义

[root@master ~]# kubectl config set-credentials dashboard-admin --token=${DASH_TOKEN} --kubeconfig=/root/.dashboard-admin.conf
//将token的信息也写入到文件中(同一个文件)

[root@master ~]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
//将用户信息也写入文件中(同一个文件)

[root@master ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
//将上下文的配置信息也写入文件中(同一个文件)

[root@master ~]# sz /root/.dashboard-admin.conf
//最后将配置信息导入到客户端本地

技术图片
技术图片
注:以上关于dashboard简单就介绍到这了!!!

二、部署weave-scope监控k8s集群

1、github搜索“scope”,然后点击如下:
技术图片
技术图片
技术图片

[root@master ~]# wget https://cloud.weave.works/k8s/scope.yaml  //将获得的链接下载
[root@master ~]# vim scope.yaml   +212    //编辑yaml文件
//定位到212行,更改service类型为NodePort,并指定端口
    spec:
      type: NodePort   //修改类型为NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 31002    //映射到宿主的端口为31002
[root@master ~]# kubectl apply -f scope.yaml   //执行yaml文件
[root@master ~]# kubectl  get  pod  -n weave   //查看容器的运行情况,确定处于正常运行
NAME                                        READY   STATUS    RESTARTS   AGE
weave-scope-agent-s66hp                     1/1     Running   0          112s
weave-scope-agent-vjn75                     1/1     Running   0          112s
weave-scope-agent-wzt8z                     1/1     Running   0          112s
weave-scope-app-b965dccb7-l5bgp             1/1     Running   0          112s
weave-scope-cluster-agent-6598584d8-jhc5b   1/1     Running   0          112s

[root@master ~]# kubectl get svc -n weave    //查看常见的svc资源对应的端口信息
NAME              TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
weave-scope-app   NodePort   10.96.65.55   <none>        80:31002/TCP   2m38s

技术图片
技术图片
注:以上关于weave-scope简单就介绍到这了!!!

三、部署Prometheus服务

在部署之前,先来了解一下Prometheus各个组件的作用如下:

* MertricServer:是k8s集群资源使用情况的聚合器,收集数据给K8s集群内使用,如:kubectl,hpa,scheduler
* PrometheusOperator:是一个系统检测和警报工具箱,用来存储监控数据;
* NodeExporter:用于各node的关键度量指标状态数据;
* kubeStateMetrics:收集k8s集群内资源对象数据,指定告警规则;
* Prometheus:采用pull方式收集apiserver,scheduler,controller-manager,kubelet组件数据,通过http协议传输;
* Grafana:是可视化数据统计和监控平台。

1、删除前两个监控平台,要不太消耗系统资源如下:

[root@master ~]# kubectl delete -f scope.yaml 
[root@master ~]# kubectl delete -f kubernetes-dashboard.yaml

2、获取yaml文件修改并执行
技术图片
技术图片

[root@master ~]# yum -y install git  //安装git命令
[root@master ~]# git clone https://github.com/imirsh/kube-prometheus.git  
//将项目克隆到本地
//下载过程中较慢请耐心等待!!!!!!!!!

[root@master ~]# cd kube-prometheus/manifests/
[root@master manifests]# vim grafana-service.yaml
//更改grafana资源对应的service资源的类型及映射的端口
apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort               //添加类型为NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 31010          //自定义映射的端口
  selector:
    app: grafana

[root@master manifests]# vim alertmanager-service.yaml 
//更改alertmanager资源对应的service资源的类型及映射的端口
apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  type: NodePort               //添加类型为NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 31020          //自定义映射的端口
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

[root@master manifests]# vim prometheus-service.yaml 
//更改prometheus资源对应的service资源的类型及映射的端口
apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort               //添加类型为NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 31030          //自定义映射的端口
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP

[root@master manifests]# pwd          //确认当前所在目录
/root/kube-prometheus/manifests
[root@master manifests]# kubectl apply -f setup/   //必须先执行setup目录下的所有yaml文件
[root@master manifests]# cd ..          //返回上层目录
[root@master kube-prometheus]# pwd        //确认目录位置
/root/kube-prometheus
[root@master kube-prometheus]# kubectl apply -f manifests  //将该目录下的yaml文件全部执行
[root@master kube-prometheus]# kubectl get pod -n monitoring 
//确保该名称空间下的所有Pod都是Running状态
//如果是选择在线下载镜像,那么可能要半个小时左右才可以正常运行

[root@master kube-prometheus]#  kubectl get svc -n monitoring | grep grafana
grafana               NodePort    10.97.206.97     <none>        3000:31010/TCP      12m
//查看grafana资源对应的service资源映射的端口

3、客户端访问群集中任意节点的IP+31010端口,即可看到以下界面(默认用户名和密码都是admin):
技术图片
技术图片
技术图片
技术图片
技术图片
技术图片

本地自带的模板有点low,可以自行导入好看的模板如下:

K8s的监控之三种可视化UI界面部署

标签:roo   protocol   port   上层   das   status   文件配置   inf   erro   

原文地址:https://blog.51cto.com/14306186/2524394

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!