k8s群集的三种Web-UI界面部署

一、部署dashboard的Web-UI界面

1、下载yaml文件

//github搜索dashboard找到该项目

//下载yaml文件
[root@docker-k8s01 ~]# wget https://raw.gitT ) ~ % S C 9  ~hubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/w m ! | 5 @ N 0 irecommended.yaml
//编辑yaml文件
[root@docker-k8s01 ~]# vim r/ # V n V tecommended.yaml
//跳转到40行左右,修改其对应的service,类型配置为Nodeport
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: 31010      //映射到宿主机的端口为31010
selector:
k8s-app: kubernetes-dashboard
//执行yaml文件
[root@docker-k8s01 ~]# kubectl apply -f recomma | Q R R _ n fended; x F.yaml
//查看Pod是否运行
[root@docker-k8s01 ~]# kubectl get pod -n kubernetes-dashboard
//查看其详细信息
[root@doH k }cker-k8s01 ~]# kubectl describe pod -n kubernetes-dashboard dashboard-metrics-scraper-76679bcZ = @ F c S B b5b9-sbB P 5 V mcvw
//确保该yaml文件提供的pod都正常运行
[root@docker-k8s01 ~]# kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.65.117   &8 $ b S Z O ) glt;none>        8000/TCP        3m3s
kubernetes-dashboard        NodePort    10.11a | 3 X X h0.154.42   <none>        443:31010/TCP   3m3s

2、访问测试

//这里使用的dashboard版本较高,相较于之前的版本访问必须使用火狐浏览器,这里不需要。

访问https://192.168.171.151:31010(访问集Z s U的任意节点IP都可以)
k8s群集的三种Web-UI界面部署

k8s群集的三种Web-UI界面部署

//创建dZ , - z _ 2 8 G &ashboard的管理用户
[root@Z . b ~ l 4 kdockV &  + w _ cer-k8s01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system
//绑定用户为集的管理员
[root@docker-k8s01 ~^ + )]# kubectl create clusterrolB x +ebinding dashboard-cluster-admin --clusterrole=cluster-adminP [ 9 --serviceaccount=kube-system:dashboard-admin
//获取刚刚创建的用户Token
[root@docker-k8s01 ~]# kubectl get secrets -n kube-system | grep dashboard-adZ q y # @ Wmin
da@ C &shboard-admin-token-zbdqm                      kubernetes.io/service-account-token   3      63s
[root@r @ w %docker-k8s01 ~]# kubectl describee q ` 9 secrets -n kubeV l ; z ? A-system dashboard-admin-token-zbdqm
//注意:上面的最后一段取决于上面查看到的用户的secrets名字。
Name:         dashboard-. + C o X d * admin-token-zbdqm
NamespE q xace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/d L M G i 9 7 ; 4service-accou] P X E y f nnt.nam8 W A 1 ?e: dashboard-am 4 2dmin
kuberx K Xnetes.io/service-accou{  ) ,nt.u+ / ` ] E Y - rid: e9716e34-581a-4c30-b601-0a2a254d4a26
Type:  kubernetes.io/service-account-token
Data
== 3 $ U t===
namespace:  11# e B 7 N bytes
token:        //将9 c Dtokei C r # R ` B 3n字段后面的值复& y e b T q制下来,如下图      

k8s群集的三种Web-UI界面部署

将Token值粘贴到下面
k8s群集的三种Web-UI界面部署
//至此,就可以在web界面进行监控群集节点的信息,及创建_ h E * +资源对象

注:一般不会| ~ V r x在这上面进行创建资源对象

k8s群集的三种Web-UI界面部署
方法二

//查看刚才创建的token 8 K d
[root@master ~]# kubectl get secreN a ` v *ts -n kube-system |[ d @ z R gJ 1 g ?rB b e _ v x ] G Lep dashboard
dashboard-admin-token-22n2v                      kubernetes.io/service-accQ L ; Pount] f j B +-token   3      11m
//查看token的详细信息,会获取token
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-22n2v
//将L 9 a 9 C ;token的信息生成一个变量
[root@master ~]#  DASH_TOKEN=$(kubectl get secretsH | | e & | X = -n kube-system dashboard-admin-token-22n2P I ,v -o jsonpath={.d% f r : Kata.token} | base64 -d)
//将k8s集群的配置信息写入到一个文件中,文件可自定义
[root@master ~]# kubectl config set-cluster? 7 [ kubz _ %ernets --server=192.168.10.52:6443 --kubeconfig=/root/.dashb! % f M 0 3 | eoard-admin.conf
Cluster "kubernets" set.
//将token的信息也写入到文件中(同一个文件)
[root@maste* W } 3 s ] m & ]r ~]#  kubectl config set-credentials dashboard-a) o c n  2dmin --token=${DASH_TOKEN} --k% r , z t e * 8u9 R 3 M Q * ]bev o K h 4config=/root/.dashboard-K M , [ e Q _ 2adf  ~ } +  I : 8min.6 ^ 9 [ 8 )conf
User "dashboard-admin" set.
//用户信息也写入文件中(同一个文件)
[root@master ~]#  kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-adm^ N z 8in --kubeconfig=/root/.dashboard-admin.conf
Context "dashboard-admin@kubernetes" created.
//将上下文的配置信息也写入文件中(同一个文件)
[root@master ~]# kubectl config use-context dashboard-admin@kubT F M o ; k & J rernetes --kubeco{ E o O f ~ , o Ynfiga i w=/root/.dashboar3 v 5d-admin.conf
Switched to context "dashboard-admin@kubernetes".
//最后将配置f R z - 9信息导入到客户端本地
[root@master ~]# sz /, ^ /root/.dashboard-admin.conf

//将文件导出后,还是登录到刚刚输入Token的界面,选择kubeconfig,然后将刚才导出的文件上传至此点击登录即可。

本人较懒,这里我就不配图了,见谅。

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

1、下载yaml文件

//github上搜索“scope% s y o * o I .

k8s群集的三种Web-UI界面部署
//下拉页面,点击kubernetes

k8s群集的三种Web-UI界面部署

//进入到新页面后再次下拉

k8s群集的三种Web-UI界面部署

//将获得的链接下载
[root@docker-k8s01 ~]# wget https://clo* V [ , 3ud.weave.works/k8s/scope.yaml
//修改yaml文件
[root@docker-k8s01 ~]# vim scope.yaml2 v 8  ` m N X ,
//跳转到大概197行左右,修改其service的端口类型
spec:
type: NodePor. Z mt    //类型为Nod8 u x ! xePort
ports:
- name: app
port: 80
protocol: TCa t P sP
targetPort: 4040
nodePort: 30123    //配置映射到& V [宿主机的端口
[root@docker-k8s01 ~]# kubectl apply -f scope.yaml
//查看容器的运行情况
[rv K Aoo9 u k X ? Ct@docker-k8s01 ~]# kubectl get pod -o wide -n weave
NAME                                        READY   STATUS    RESTARTS   AGE    IP                NODE           NOMINATED NODE   READINESS GATES
weave-scope-agent-9vj2! G % i T g X Ww                     1/1     Running   0          119s   192.168.171.151   docker-k8s01   <none>           <none>
weave-scope-agent-h4gt6                     1/1     Running   0          119se A 1 v 6 [   192.168.171.152   docker-k8s03   <none>           <none>
weave-s T ? y ^ Nscope-agent-lqzbq                     1/1     Running   0          119s   192.168.173 i ]1.150   docker-k8sc O j02   <none&g2 ^ ) u Pt;           <none>
wq 6 w G b s % _ -eave-scope-app-b965dccb7-ph6zg             1/1     Run8 I /ning   0          119s   10.244.1.3        docker-k8s02   <none>           &G ~ .lt;none>
weave-scope-cluster-agent-6598584d8-h8b9q   1/1     Running   0          119s   10.244.2.3        docker-k8s03   <none>           <nonI Y ! G U , E & ?e>
//DaemonSet资源对象:weave-scope-agent(代理):负责收集节点的信息;
//deployment资源对象:weave-scope-app(应用):从agent获取数据,通过web UI展示并与用户交互;
//DaemonSet资源对象的特性和d9 ^ _ 0 |eployment相比,就是DaemonSet资w D R 7 c ;源对象会在每个节点上都运x A D K / j M u行且只能运行一个pod。
//由于每个节点都需要监控,所y E 7 _ =以用到了DaemonSI A N I W * tet这种资C ? v源对象

2、访. e 9 J Y ]问测试

//访问群集的映射端口30123

k8s群集的三种Web-UI界面部署

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

三、部= N + P U )署ProB X gmetheus服务

Prometheus各组件的作用:

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

1、下载promethV p G A ( * O b 0eus所需文件

//github上搜索prometheus,获取到git下载链接

//安装git命令
[root@docker-k8s01 ~]# yum -y install gp S l Dit
//创建目录(可忽+ U Q V 1 l H Q T略)
[root@docke$ I xr-k8s01 ~]# mkdir prometheus
[root@docker8 A y-k8s01 ~]# cd prometheus/
//克隆github库
[root@docker-k8s01 prometheus]# git clone https://gC | Iithub.com/p y r 0 = X wimirsh/kube-prometheus.git
//进入到克隆目录
[root@docker-u ` nk8s01 prometheus]# cd kube] Q & v z-promek 1 Y 9 ~ | A vtheus/manifests/

2、修改各个组件Service的yaml文/ S z ` z

//修改grafana的yaml文件
[root@dV { , 3ockeM * ?r-k8s01 manifests]# cat grafana-service.yaml
apiVersion:X a : v @ v T l } v1
kind: Serv` ^ n + ] ( )ice
metadata:
lab# j )els:
app:i D l grafana
name: grafana
namespace: monitoring
speA H Fc:
type: Nodp { W $ C dePort    //改为NodePort类型
ports:
- name: http
port: 3000
targeI D ; 8 ; e } % ftPort: http
nodePort: 30333    //映射端口为30333
selector:
app: grafana
//修改prometheus的yaml文件
[root@docker-k8s01 manifests]# cat prometheus-service.yH 0 { E W *aml
apiVersion: v1
kind: Service
metadata:
labf b L i { g }els:
prometheus: k8s
name: prometheus-k8s
namespace: monitorinL ( Q & % * 3g
spec:
type: NodePort    //类型为NodePort
ports:
- name: web
port: 9090
targetPort: web
nodePort: 30444    //映射端口为30444
selector:
app: prometheus
prometheus: k8s
seb Z | 5 ? Y m  9ssionAffinity: ClientIP
//修改alertmanager的yaml文x u [ 9 ~ J件
[root@docker-k8s01 manifests]# cat alertmanager-service.yaL 5 S 5 3mlx E C R
apiVersion: v1
kind: Service
metadata:
labels:
alertmanager: main
name: alertmanager-main
namespace: monitog * t d 0 / uring
spec:
type: Ni i P G ( S g ZodePort       //类型为NodePort
ports:
- name: web
port: 9093
targetPort: wev Z Eb
nodePort: 30555    //映& i F射端口为30555
selector:
alertmanagerF e [ 2: main
app: alertU ! { Imanager
sessionAffinity: Clx # ]ientIP

3A Y ^ U % A +、执行yaml文件

//确定当前路径
[root@docker-k8s01 manifests]# pwd
/root/prometheus/kube-promethe# u 3 xus/manifests
//执行setup目录{ h )下的所有yaml文件,记住是所有!
[root@dockf y D H Ber-k8s01 manifests]# kubectl applE y &y -f setup/
//建议多执行几次,因为目录下= { g D 4 9 8的yaml文件太多,可能执行的时候可能会落下一两个没有执行
[root@docker-k8s01 manifests]# cd ..      //返回上级目录
[root@doc[ p fker-k8s01 kube-prometheus]# pwF n = i # L % ? ,d
/root/prometheus/kube-i w vpromethe2 & Z a Z Uus
//执行该目录下的所有yaml
[root@docker-k8s01 kube-f ( N q N ; uprometheus]# kubectl apply -f manifests/
//确保所有pod都正常运行
[root@docker-k8s01 kube-prometheus]# kuC ? i f R - d Gbectl get pod -n monitoring -w

当执行以下yaml文件时,每个节点会在互联网上下载很多镜像,为2 { h P G W 了防止下载镜像的时间过长,可以先将镜像下载到本地,然后导入至各个节点,然后在执行yaml文件,将会省些时间。

4、客户端访问% T 2r U s 5 ; # ! +集中任意节点的IP+30100端口,即可看到以下界面(默认用户名和密码都是admin)

k8s群集的三种Web-UI界面部署

k8s群集的三种Web-UI界面部署

//添加模板

k8s群集的三种Web-UI界面部署

k8s群集的三种Web-UI界面部署

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

k8s群集的三种Web-UI界面部署
k8s群集的三种Web-UI界面部署
当然,也可以到grafana网站寻找合适的0 8 * 2 #模板进行下载,这里我就不详细介绍怎$ N ? W ? z么添加模板了。