General-purpose web UI for Kubernetes clusters
用于Kubernetes集群的通用web UI
在dashbord中,虽然可以做到创建、删除、修改资源等操作,但通常情况下,我们会把它当作监控k8s集群的软件
dashboard能够直观的看到rc、deployment、pod、services等k8s组件的运行情况和日志信息。
1、从Github搜索dasgboard,下载yaml文件
[root@master ~]# mkdir dashboard
[root@master ~]# cd dashboard/
[root@master dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
[root@master dashboard]# ls
recommended.yaml
[root@node01 ~]# docker pull kubernetesui/dashboard:v2.0.0-rc5
[root@node02 ~]# docker pull kubernetesui/dashboard:v2.0.0-rc5
2、运行yaml文件:
修改service类型类NodePort
#在40行的spec字段修改
[root@master dashboard]# vim recommended.yaml
spec:
type: NodePort
[root@master dashboard]# kubectl apply -f recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created
[root@master dashboard]# kubectl get pod -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-7f5767668b-f7nh6 1/1 Running 0 9m32s
kubernetes-dashboard-57b4bcc994-2rj9k 1/1 Running 0 9m32s
[root@master dashboard]# kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.111.237.119 <none> 8000/TCP 16m
kubernetes-dashboard NodePort 10.107.77.172 <none> 443:30361/TCP 16m
[root@master dashboard]# kubectl get deployments. -n kubernetes-dashboard
NAME READY UP-TO-DATE AVAILABLE AGE
dashboard-metrics-scraper 1/1 1 1 11m #将收集到的数据制作成图表的形式
kubernetes-dashboard 1/1 1 1 11m
3、通过浏览器访问:https://192.168.1.70:30361
两种登录方式:
kubeconfig:配置文件
Token:令牌
基于Token的方法登录dashboard
1、创建一个dashboaed的管理用户
[root@master dashboard]# kubectl create serviceaccount dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
2、将这个用户绑定为集群管理用户
[root@master dashboard]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
3、获取Token
#得到Token的名称
[root@master dashboard]# kubectl get secrets -n kube-system | grep dashboard-admin
dashboard-admin-token-mwht2 kubernetes.io/service-account-token 3 5m30s
#查看上述得到的secret资源的详细信息,会得到Token
[root@master dashboard]# kubectl get secrets -n kube-system dashboard-admin-token-mwht2
NAME TYPE DATA AGE
dashboard-admin-token-mwht2 kubernetes.io/service-account-token 3 7m19s
//这个类型不是Opaque,说明不是隐藏的,我们可以看到他的详细信息
#获取详细信息,得到Token
[root@master dashboard]# kubectl describe secrets -n kube-system dashboard-admin-token-mwht2
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tbXdodDIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjliODE4YjYtOTA3Zi00NTBmLWI3NjgtMTc2ODIyM2Y1OTIyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.WCcVrx6oXs0k7-0hQOOik30ZPJl0sNeQE987PHv_Jm9ZpLQ4P9VIQdN49uRvNsd7DF4Ozgu5enWFvNsiaCDmYHauK2LAoHbDBURE9wGx8VlMaaquZ1B_ur4lOluP6Ha3wdZB64fEdtrg-6-DjIS7SC2Kqr2Bcl8NeRdtABh3cufgJ2EQoU40-FUy-0ahegYixIrrQ-DXgZeGrXP79RzHmBXaSwbRwTqWXwNf0e25on_gCiiMC-MVmbZ0MXhNNv-jc8uD2obaEUTdOCLg__f482Zy7xLEMjBv9eVn0P5u7c8r45VfDs08zK4Leh5GI4KIgcuxt37TCtfmEz5XEoTLnA
4、在浏览器上使用Token登录
PS:如果是使用的是旧版本的dashboard,使用谷歌浏览器登录,可能不成功,需要换成其他的浏览器,比如火狐
//如果没有显示,就说明serviceaccount,没有绑定账号,就说明没有权限,就什么都看不到
还有一些扩容缩容、更新,删除的操作
除了基于Token的方法登录dashboard,还有基于kuberconfig配置文件的登录方式
1、获取Tonke
#得到Token的名称
[root@master dashboard]# kubectl get secrets -n kube-system | grep dashboard-admin
dashboard-admin-token-mwht2 kubernetes.io/service-account-token 3 5m30s
#查看上述得到的secret资源的详细信息,会得到Token
[root@master dashboard]# kubectl get secrets -n kube-system dashboard-admin-token-mwht2
NAME TYPE DATA AGE
dashboard-admin-token-mwht2 kubernetes.io/service-account-token 3 7m19s
2、生成kubeconfig配置文件
#设置一个环境变量代表获取Token
[root@master dashboard]# DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-mwht2 -o jsonpath={.data.token} | base64 -d)
#将k8s集群的配置信息写入kubeconfig配置文件中
[root@master dashboard]# kubectl config set-cluster kubernetes --server=192.168.1.70:6443 --kubeconfig=/root/.dashboard-admin.conf
#将Token写入配置文件里
[root@master dashboard]# kubectl config set-credentials dashboard-admin --token=$DASH_TOKEN --kubeconfig=/root/.dashboard-admin.conf
[root@master dashboard]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
[root@master dashboard]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
3、将生成的/root/.dashboard-admin.config的配置文件,导出并保存
[root@master dashboard]# sz /root/.dashboard-admin.conf
4、从浏览器选择kubeconfig的登录方式,然后导入配置文件即可
Weave Scope是Weaveworks开发的监控工具。Weave Scope在Kubernetes集群中生成进程,容器和主机的映射,以帮助实时了解Docker容器。还可基于图形UI管理容器并在容器上运行诊断命令
1、在Github上直接搜索scope,找到yaml文件并下载下来
3、将这个yaml文件下载下来
[root@master ~]# wget https://cloud.weave.works/k8s/scope.yaml
4、修改yaml,修改service的端口类型
[root@master ~]# vim scope.yaml
#在212行的spec字段中添加
type: NodePort
#保存并退出,运行yaml文件
root@master ~]# kubectl apply -f scope.yaml
namespace/weave created
serviceaccount/weave-scope created
clusterrole.rbac.authorization.k8s.io/weave-scope created
clusterrolebinding.rbac.authorization.k8s.io/weave-scope created
deployment.apps/weave-scope-app created
service/weave-scope-app created
deployment.apps/weave-scope-cluster-agent created
daemonset.apps/weave-scope-agent created
[root@master ~]# kubectl get deployments. -n weave
NAME READY UP-TO-DATE AVAILABLE AGE
weave-scope-app 1/1 1 1 26m #展示信息
weave-scope-cluster-agent 1/1 1 1 26m #收集信息
[root@master ~]# kubectl get pod -n weave
NAME READY STATUS RESTARTS AGE
weave-scope-agent-jv4g8 1/1 Running 0 21s
weave-scope-agent-kw7x9 1/1 Running 0 21s
weave-scope-agent-vnqks 1/1 Running 0 21s
weave-scope-app-78cff98cbc-nx6p5 1/1 Running 0 21s
weave-scope-cluster-agent-7cc889fbbf-tnrhv 1/1 Running 0 21s
5、查看端口,使用浏览器访问:192.168.1.70:30366
[root@master ~]# kubectl get svc -n weave
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
weave-scope-app NodePort 10.110.46.45 <none> 80:30366/TCP 41s
在scope的web界面中,可以查看很多的东西,pod、node节点等详细信息,包括打开容器的终端,查看其日志信息等等…
Prometheus可以原生地监测Kubernetes,Prometheus Operator简化了Kubernetes上的Prometheus设置,并允许使用Prometheus适配器提供自定义指标API。 Prometheus提供强大的查询语言和内置仪表板,用于查询和可视化数据
PS:在这里部署的prometheus,并不是Prometheus官网提供的,而是使用的coreOS提供的Prometheus项目
Prometheus各个组件的作用:
MetricsServer:是k8s集群资源使用情况的聚合器,收集数据给k8s集群内使用,如kubectl,hpa,scheduler等
Prometheus Operator:是一个系统检测和警报工具箱,用来存储监控数据
Prometheus node-exporter:收集k8s集群内资源的数据,指定告警规则
Prometheus:收集apiServer,scheduler,contorller-manager,kubelet组件的数据,通过http协议传输
Grnfana:可视化数据统计和监控平台
1、克隆Prometheus的项目地址到本地
[root@master ~]# mkdir prometheus
[root@master ~]# cd prometheus/
[root@master prometheus]# git clone https://github.com/coreos/kube-prometheus.git
[root@master prometheus]# ls
kube-prometheus
2、修改grafana-service.yaml文件,使用NodePort的暴露方式,暴露的端口为31001
[root@master prometheus]# cd kube-prometheus/manifests/
[root@master manifests]# vim grafana-service.yaml
#在spec字段下添加
spec:
type: NodePort
ports:
- name: http
port: 3000
targetPort: http
nodePort: 31001
3、修改prometheus-service.yaml文件,使用NodePort的暴露方式,暴露的端口为31002
[root@master manifests]# vim prometheus-service.yaml
#在spec字段下添加
spec:
type: NodePort
ports:
- name: web
port: 9090
targetPort: web
nodePort: 31002
4、修改alertmanager-service.yaml(配置告警模板)文件,使用NodePort的暴露方式,暴露的端口为31003
[root@master manifests]# vim alertmanager-service.yaml
#在spec字段下添加
spec:
type: NodePort
ports:
- name: web
port: 9093
targetPort: web
nodePort: 31003
5、将这个目录中的yaml,全部运行,是运行以上yaml文件的基础环境配置
[root@master manifests]# cd setup/ #如果想要运行上面的yaml,首先要运行基础环境的设置
[root@master setup]# cd ..
[root@master manifests]# pwd
/root/prometheus/kube-prometheus/manifests
[root@master manifests]# kubectl apply -f setup/
6、运行主yaml文件
[root@master manifests]# cd ..
[root@master kube-prometheus]# pwd
/root/prometheus/kube-prometheus
[root@master kube-prometheus]# kubectl apply -f manifests/
7、浏览器访问:192.168.1.70:31001
//根据提示修改密码,然后保存登录
//将这三个导入一下
浏览器访问grafan官网:https://grafana.com/导入监控模板
部署成功以后,就可运行一条命令,查看资源使用情况(MetricsServer必须部署成功)
[root@master ~]# kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 182m 9% 1380Mi 80%
node01 383m 19% 1402Mi 81%
node02 396m 19% 1406Mi 81%
dashboard:
可以查看集群中应用的运行状态,也能够修改、创建k8s集群中的个各种资源
用于Kubernetes集群的通用web UI,在dasgboard中,虽然可以做到创建、删除、修改资源等操作,但通常情况下,我们会把它仿作监控k8s集群的软件。dashboard能够直观的看到rc、deployment、pod、service等k8s组件与逆行的情况和日志信息
weave-scope:
可以查看集群中应用的运行状态,也能够修改、创建k8s集群中的个各种资源
Weave Scope是Weaveworks开发的监控工具。Weave Scope在Kubernetes集群中生成进程,容器和主机的映射,以帮助实时了解Docker容器。还可基于图形UI管理容器并在容器上运行诊断命令
Prometheus:
Prometheus是一个开源系统监控和报警工具。
Prometheus服务可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化展示收集的数据在K8s中,关于集群的资源有metrics度量值的概念,有各种不同的exporter可以通过api接口对外提供各种度量值的及时数据,prometheus在与k8s融合工作的过程中就是通过与这些提供metric值的exporter进行交互,获取数据,整合数据,展示数据,触发告警的过程
Prometheus可以原生地监测Kubernetes,Prometheus Operator简化了Kubernetes上的Prometheus设置,并允许使用Prometheus适配器提供自定义指标API。 Prometheus提供强大的查询语言和内置仪表板,用于查询和可视化数据