k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

1、k8s的UI访问界面-dashboard

在dashboard中,虽然能够作到建立、删除、修改资源等操做,但一般状况下,咱们会把它当作健康k8s集群的软件。node

做为Kubernetes的Web用户界面,用户能够经过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群自己进行管理。经过Dashboard,用户能够查看集群中应用的运行状况,同时也可以基于Dashboard建立或修改部署、任务、服务等Kubernetes的资源。经过部署向导,用户可以对部署进行扩缩容,进行滚动更新、重启Pod和部署新应用。固然,经过Dashboard也可以查看Kubernetes资源的状态。git

一、Dashboard提供的功能

在默认状况下,Dashboard显示默认(default)命名空间下的对象,也能够经过命名空间选择器选择其余的命名空间。在Dashboard用户界面中可以显示集群大部分的对象类型。github

1)集群管理

集群管理视图用于对节点、命名空间、持久化存储卷、角色和存储类进行管理。 节点视图显示CPU和内存的使用状况,以及此节点的建立时间和运行状态。 命名空间视图会显示集群中存在哪些命名空间,以及这些命名空间的运行状态。角色视图以列表形式展现集群中存在哪些角色,这些角色的类型和所在的命名空间。 持久化存储卷以列表的方式进行展现,能够看到每个持久化存储卷的存储总量、访问模式、使用状态等信息;管理员也可以删除和编辑持久化存储卷的YAML文件。web

2) 工做负载

工做负载视图显示部署、副本集、有状态副本集等全部的工做负载类型。在此视图中,各类工做负载会按照各自的类型进行组织。 工做负载的详细信息视图可以显示应用的详细信息和状态信息,以及对象之间的关系。docker

3) 服务发现和负载均衡

服务发现视图可以将集群内容的服务暴露给集群外的应用,集群内外的应用能够经过暴露的服务调用应用,外部的应用使用外部的端点,内部的应用使用内部端点json

4) 存储

存储视图显示被应用用来存储数据的持久化存储卷申明资源。vim

5) 配置

配置视图显示集群中应用运行时所使用配置信息,Kubernetes提供了配置字典(ConfigMaps)和秘密字典(Secrets),经过配置视图,可以编辑和管理配置对象,以及查看隐藏的敏感信息。api

6) 日志视图

Pod列表和详细信息页面提供了查看日志视图的连接,经过日志视图不但可以查看Pod的日志信息,也可以查看Pod容器的日志信息。经过Dashboard可以根据向导建立和部署一个容器化的应用,固然也能够经过手工的方式输入指定应用信息,或者经过上传YAML和JSON文件来建立和不受应用。浏览器

二、下载所需yaml文件和镜像

[root@master https]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
[root@master https]# docker pull kubernetesui/dashboard:v2.0.0-rc5

三、修改 recommended.yaml

[root@master https]#vim recommended.yaml 
---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort            #添加40
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

执行一下

[root@master https]# kubectl apply -f recommended.yaml

查看一下

[root@master https]# kubectl get svc -n kubernetes-dashboard

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

三、浏览器访问https://192.168.1.21:32306

PS:若是是使用的旧版本的dashboard, 使用Google浏览器登陆,多是不成功的,须要换成其余的浏览器,好比:火狐。安全

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

四、基于token的方法登陆dashboard

<1>建立一个dashboard的管理用户

[root@master https]# kubectl create serviceaccount dashboard-admin -n kube-system

<2>绑定用户为集群管理用户

[root@master https]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

<3>获取Token

[root@master https]# kubectl get secrets -n kube-system | grep dashboard-admin
//先获得Token的名称

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

[root@master https]# kubectl describe secrets -n kube-system  dashboard-admin-token-62bh9
//查看上述获得的secret资源的详细信息,会获得token

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

<4>在浏览器上使用token登陆。

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

建立一个资源

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

查看是否建立成功

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

五、基于kubeconfig配置文件的方法登陆dashboard

<1>获取Token

[root@master https]# kubectl get secrets -n kube-system | grep dashboard-admin
//先获得Token的名称

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

[root@master https]# kubectl describe secrets -n kube-system  dashboard-admin-token-62bh9
//查看上述获得的secret资源的详细信息,会获得token

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

<2>生成kubeconfig配置文件。

设置一个环境变量表明获取的token

[root@master https]# DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-62bh9  -o jsonpath={.data.token} | base64 -d)

将k8s集群的配置信息写入kubeconfig配置文件中。

[root@master https]# kubectl config set-cluster kubernetes --server=192.168.1.21:6443 --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# kubectl config set-credentials dashboard-admin --token=$DASH_TOKEN --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
[root@master https]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf

<3>将生成的/root/.dashboard-admin.conf的配置文件,导出并作保存。

[root@master https]# sz /root/.dashboard-admin.conf 
//导出到本身习惯的位置便可

<4>从浏览器选择kubeconfig的登陆方式,而后导入配置文件便可。

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

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

Weave Scope 是 Docker 和 Kubernetes 可视化监控工具。Scope 提供了至上而下的集群基础设施和应用的完整视图,用户能够轻松对分布式的容器化应用进行实时监控和问题诊断。

使用scope

  • Scope 会自动构建应用和集群的逻辑拓扑。好比点击顶部 PODS,会显示全部 Pod 以及 Pod 之间的依赖关系。
  • 点击 HOSTS,会显示各个节点之间的关系。

    实时资源监控

  • 能够在 Scope 中查看资源的 CPU 和内存使用状况。
  • 支持的资源有 Host、Pod 和 Container。**

    在线操做

  • Scope 还提供了便捷的在线操做功能,好比选中某个 Host,点击 >_ 按钮能够直接在浏览器中打开节点的命令行终端
  • 点击 Deployment 的 + 能够执行 Scale Up 操做
  • 能够查看 Pod 的日志
  • 能够 attach、restart、stop 容器,以及直接在 Scope 中排查问题

    强大的搜索功能

  • Scope 支持关键字搜索和定位资源。
  • 还能够进行条件搜索,好比查找和定位 MEMORY > 100M 的 Pod。

一、在github上查找scope的yaml文件

(1)github上搜索scope

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

(2)进入k8s的部署scope的说明

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

(3)选择k8s的部署

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

(4)复制上面的连接,并下载yaml文件

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

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

[root@master ~]# vim scope.yaml  #编辑yaml文件
#跳转至213行,修改其service的端口类型
    spec:
      type: NodePort         #修改类型为NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040

(1)执行一下

[root@master https]# kubectl apply -f scope.yaml

(2)查看容器的运行状况,肯定处于正常运行

[root@master https]# kubectl get  pod -o wide -n weave

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

  • DaemonSet weave-scope-agent,集群每一个节点上都会运行的 scope agent 程序,负责收集数据。
  • Deployment weave-scope-app,scope 应用,从 agent 获取数据,经过 Web UI 展现并与用户交互。
  • Service weave-scope-app,默认是 ClusterIP 类型,咱们已经在上面的命令中添加了参数k8s-service-type=NodePort修改成 NodePort。
[root@master https]# kubectl get svc -n weave

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

#DaemonSet资源对象:weave-scope-agent(代理):负责收集节点的信息;
#deployment资源对象:weave-scope-app(应用):从agent获取数据,经过web UI展现并与用户交互;
#DaemonSet资源对象的特性和deployment相比,就是DaemonSet资源对象会在每一个节点上都运行且只能运行一个pod。
#因为每一个节点都须要监控,因此用到了DaemonSet这种资源对象

三、浏览器访问一下http://192.168.1.21:31841/

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

在scope的web界面中,能够查看不少的东西,pod、node节点等详细信息,包括打开容器的终端,查看其日志信息等等

总结

weave scope能够以其简洁的可视化为咱们更生动形象的展示出service/controller/pod等资源对象的管理及简单的web ui操做,方便故障排除及时定位
weave scope做为web ui目前缺乏登陆验证,能够利用其余方式里面web服务器的验证作安全管控。

3、部署Prometheus服务

PS:在这里部署的prometheus,并非Prometheus官网提供的,而是使用的coreos提供的prometheus项目。
k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

在部署以前,先来了解一下Prometheus各个组件的做用吧!

  • MetricsServer: 是k8s集群资源使用状况的聚合器,收集数据给k8s集群内使用,如kubectl,hpa,scheduler等。
  • Prometheus Operator : 是一个系统检测和警报工具箱,用来存储监控数据。
  • Prometheus node-exporter :收集k8s集群资源的数据,指定告警规则。
  • Prometheus :收集apiserver,scheduler,controller-manager,kubelet组件的数据,经过http协议传输。
  • Grafana: 可视化数据统计和监控平台。

特征

Prometheus 相比于其余传统监控工具主要有如下几个特色:

  • 具备由 metric 名称和键/值对标识的时间序列数据的多维数据模型
  • 有一个灵活的查询语言
  • 不依赖分布式存储,只和本地磁盘有关
  • 经过 HTTP 的服务拉取时间序列数据
  • 也支持推送的方式来添加时间序列数据
  • 还支持经过服务发现或静态配置发现目标
  • 多种图形和仪表板支持

一、在github上搜索coreos/prometheus

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

复制连接

二、克隆github上的promethes项目

[root@master promethes]# yum -y install git
//下载git命令
[root@master promethes]# git clone  https://github.com/coreos/kube-prometheus.git
//克隆github上的项目

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

三、修改grafapa-service.yaml文件, 更改成nodePort的暴露方式,暴露端口为31001.。

[root@master promethes]# cd kube-prometheus/manifests/
//进入kube-prometheus的manifests目录
[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: 31001    #映射到宿主机31001端口
  selector:
    app: grafana

3.修改prometheus-service.yaml文件, 更改成nodePort的暴露方式,暴露端口为31002.

[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: 31002    #映射到宿主机31002端口
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP

四、修改alertmanager-service.yaml文件, 更改成nodePort的暴露方式,暴露端口为31003

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

五、将setup目录中全部的yaml文件,所有运行。是运行以上yaml文件的基础环境配置。

[root@master manifests]# cd setup/
//进入setup/目录
[root@master manifests]# kubectl apply -f setup/
//运行setup目录中全部的yaml文件

六、将主目录(kube-prometheus)中全部的yaml文件,所有运行。

当执行如下yaml文件时,每一个节点会在互联网上下载不少镜像,为了防止下载镜像的时间过长,能够先将我提供的镜像下载到本地,而后导入至各个节点,而后在执行下面的yaml文件,将会省些时间。(若是下载我提供的镜像,建议写个导入镜像的脚本进行导入操做,避免手动导入,形成错误)

[root@master manifests]# cd ..
//返回上一级目录(kube-prometheus)
[root@master kube-prometheus]# kubectl apply -f manifests/
//运行kube-prometheus目录中全部的yaml文件

查看一下

[root@master ~]# kubectl get pod -n monitoring

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

七、浏览器访问一下http://192.168.1.21:31001

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

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

根据提示更改密码:

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

(1)添加模板

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

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

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

(2)进行如下点击,便可查看群集内的监控状态

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

如下可看到监控状态

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

八、导入监控模板

从grafana的官网搜索https://grafana.com/

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)
复制如下这个模板的id

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

k8s群集的三种的Web-UI界面部署(dashboard、scope、Prometheus)

如今能够看到监控画面了

相关文章
相关标签/搜索