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

一、部署dashboard的Web-UI界面

1、下载yaml文件配置并执行

#下载github上的项目(github搜索dashboard即可找到该项目)
[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recommended/kubernetes-dashboard.yaml
[root@master ~]# vim kubernetes-dashboard.yaml 
#跳转至112行,修改其指定的镜像,修改如下:
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
#默认指定的是Google的镜像,国外的下载不下来,所以要改为国内阿里云的
#跳转到150行,修改其对应的service,将其类型配置为NodePort,修改如下:
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort  #添加类型为NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30230        #映射到宿主机的端口为30230
  selector:
    k8s-app: kubernetes-dashboard
#修改完成后,保存退出即可
[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml    #执行yaml文件
[root@master ~]# kubectl get pod -n kube-system | grep dashboard    #确认其正常运行
kubernetes-dashboard-6cfb7d8f54-l6jgj   1/1     Running   0          88s

2、客户端通过火狐浏览器访问

必须要用火狐浏览器,Google和默认的edge都无法访问。

1)访问https://192.168.20.6:30230 ,(192.168.20.6是我这里master的IP,实际上访问群集内的任意节点IP+30230端口都可以),然后点击如下:

k8s群集的三种Web-UI界面部署_第1张图片

2)在终端创建用户并查看登录令牌:

[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
[root@master ~]# kubectl get secrets -n kube-system | grep dashboard-admin  #获取刚刚创建的用户的token
dashboard-admin-token-97g76                      kubernetes.io/service-account-token   3      15s
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-97g76
#注意:上面的最后一段取决于上面查看到的用户的secrets名字。
Name:         dashboard-admin-token-97g76
Namespace:    kube-system
        ..................#省略部分内容
Data
====
token:      #将该token字段后面的值复制下来

3)将token值粘贴到下面:

k8s群集的三种Web-UI界面部署_第2张图片

4)至此,即可在web界面进行监控群集节点的信息,及创建资源对象(一般不会在这上面进行创建资源对象):

k8s群集的三种Web-UI界面部署_第3张图片

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

这个服务的yaml文件在github上不太容易找到,还是附上找这个链接的过程吧!如下:

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

k8s群集的三种Web-UI界面部署_第4张图片

2、进入后,下拉页面,点击“kubernetes”,如下:

k8s群集的三种Web-UI界面部署_第5张图片

3、进入后,再次下拉页面:

k8s群集的三种Web-UI界面部署_第6张图片

4、将获得的链接下载:

[root@master ~]# wget https://cloud.weave.works/k8s/scope.yaml

5、修改下载的yaml文件并运行:

[root@master ~]# vim scope.yaml  #编辑yaml文件
#跳转至197行,修改其service的端口类型
    spec:
      type: NodePort         #修改类型为NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 30231        #映射到宿主的端口为30231
[root@master ~]# kubectl apply -f scope.yaml      #执行yaml文件
#查看容器的运行情况,确定处于正常运行
[root@master ~]# kubectl get pod -o wide -n weave    #默认在weave名称空间
NAME                                         READY   STATUS    RESTARTS   AGE   IP             NODE     NOMINATED NODE   READINESS GATES
weave-scope-agent-b4dwz                      1/1     Running   0          73s   192.168.20.8   node02              
weave-scope-agent-lksqh                      1/1     Running   0          73s   192.168.20.7   node01              
weave-scope-agent-mv6mj                      1/1     Running   0          73s   192.168.20.6   master              
weave-scope-app-78cff98cbc-kxp9v             1/1     Running   0          73s   10.244.2.2     node02              
weave-scope-cluster-agent-7cc889fbbf-ngf8j   1/1     Running   0          73s   10.244.1.3     node01              
#DaemonSet资源对象:weave-scope-agent(代理):负责收集节点的信息;
#deployment资源对象:weave-scope-app(应用):从agent获取数据,通过web UI展示并与用户交互;
#DaemonSet资源对象的特性和deployment相比,就是DaemonSet资源对象会在每个节点上都运行且只能运行一个pod。
#由于每个节点都需要监控,所以用到了DaemonSet这种资源对象

6、浏览器访问群集的映射端口30231,如下:

k8s群集的三种Web-UI界面部署_第7张图片

在scope的web界面中,可以查看很多的东西,pod、node节点等详细信息,包括打开容器的终端,查看其日志信息等等......

三、部署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、下载prometheus所需文件:

[root@master ~]# mkdir prometheus
[root@master ~]# cd prometheus/
[root@master prometheus]# yum -y install git       #安装git命令
#克隆远端github库
[root@master prometheus]# git clone https://github.com/coreos/kube-prometheus.git
[root@master prometheus]# cd kube-prometheus/manifests/    #进入克隆下的目录

3、修改各个组件service的yaml文件

[root@master manifests]# vim grafana-service.yaml    #修改grafana的yaml文件

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort       #改为NodePort类型
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30100    #映射到宿主机30100端口
  selector:
    app: grafana
[root@master manifests]# vim prometheus-service.yaml    #修改prometheus的yaml文件

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: 30200    #映射到宿主机30200端口
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP
[root@master manifests]# vim alertmanager-service.yaml    #修改alertmanager的yaml文件

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: 30300    #映射到宿主机30300端口
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

4、执行yaml文件

当执行以下yaml文件时,每个节点会在互联网上下载很多镜像,为了防止下载镜像的时间过长,可以先将我提供的镜像下载到本地,然后导入至各个节点,然后在执行下面的yaml文件,将会省些时间。(如果下载我提供的镜像,建议写个导入镜像的脚本进行导入操作,避免手动导入,造成错误)

脚本示例如下:

[root@master ~]# vim a.sh  #脚本如下

#!/bin/bash
cd /root/image        #这个目录下存放的只有我网盘中的镜像
for i in `ls /root/image/`
do
  docker load < ${i}
done
[root@master ~]# sh a.sh      #执行脚本即可
#必须先执行setup目录下的所有yaml文件,如下:
[root@master manifests]# pwd    #确定当前路径
/root/prometheus/kube-prometheus/manifests
[root@master manifests]# kubectl apply -f setup/     #执行setup目录下的所有yaml文件
#再执行manifests目录下的yaml文件
[root@master manifests]# cd ..  #返回到上一级目录
[root@master kube-prometheus]# kubectl apply -f manifests/   #执行yaml文件
[root@master kube-prometheus]# kubectl get pod -n monitoring  #确认所有pod正常运行
#如果是选择在线下载镜像,那么可能要半个小时左右才可以正常运行

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

k8s群集的三种Web-UI界面部署_第8张图片

根据提示更改密码:

k8s群集的三种Web-UI界面部署_第9张图片

添加模板:

k8s群集的三种Web-UI界面部署_第10张图片

k8s群集的三种Web-UI界面部署_第11张图片

依次点击“import”进行导入下面三个模板:

k8s群集的三种Web-UI界面部署_第12张图片

进行以下点击,即可查看群集内的监控状态:

k8s群集的三种Web-UI界面部署_第13张图片

k8s群集的三种Web-UI界面部署_第14张图片

———————— 本文至此结束,感谢阅读 ————————