Kubernetes之Weave Scope集群监控

1、资源指标和资源监控

一个集群系统管理离不开监控,同样的Kubernetes也需要根据数据指标来采集相关数据,从而完成对集群系统的监控状况进行监测。这些指标总体上分为两个组成:监控集群本身和监控Pod对象,通常一个集群的衡量性指标包括以下几个部分:

  • 节点资源状态:主要包括网络带宽、磁盘空间、CPU和内存使用率
  • 节点的数量:即时性了解集群的可用节点数量可以为用户计算服务器使用的费用支出提供参考。
  • 运行的Pod对象:正在运行的Pod对象数量可以评估可用节点数量是否足够,以及节点故障时是否能平衡负载。

另一个方面,对Pod资源对象的监控需求大概有以下三类:

  • Kubernetes指标:监测特定应用程序相关的Pod对象的部署过程、副本数量、状态信息、健康状态、网络等等。
  • 容器指标:容器的资源需求、资源限制、CPU、内存、磁盘空间、网络带宽的实际占用情况。
  • 应用程序指标:应用程序自身的内建指标,和业务规则相关

2、Weave Scope监控集群

Weave Scope 是 Docker 和 Kubernetes 可视化监控工具。Scope 提供了至上而下的集群基础设施和应用的完整视图,用户可以轻松对分布式的容器化应用进行实时监控和问题诊断。 对于复杂的应用编排和依赖关系,scope可以使用清晰的图标一览应用状态和拓扑关系。

(1)Weave Scope部署(注意:非常依赖coredns)

参考官方网站:https://www.weave.works/docs/scope/latest/installing/#k8s

1
2
3
4
5
6
7
8
[root@k8s-master mainfests]# kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"
namespace/weave created #创建名称空间weave,也可以在创建时指定名称空间
serviceaccount/weave-scope created #创建serviceaccount
clusterrole.rbac.authorization.k8s.io/weave-scope created #创建角色
clusterrolebinding.rbac.authorization.k8s.io/weave-scope created #绑定角色
deployment.apps/weave-scope-app created #创建deployment
service/weave-scope-app created #创建service
daemonset.extensions/weave-scope-agent created #创建deamonset
1
2
3
4
5
6
7
[root@k8s-master mainfests]# kubectl get ns
NAME STATUS AGE
default Active 68d
ingress-nginx Active 28d
kube-public Active 68d
kube-system Active 68d
weave Active 1m
1
2
3
4
[root@master ~]# kubectl get deployment -n weave
NAME READY UP-TO-DATE AVAILABLE AGE
weave-scope-app 1/1 1 1 13m
weave-scope-cluster-agent 1/1 1 1 13m
1
2
3
[root@k8s-master mainfests]# kubectl get svc -n weave
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
weave-scope-app ClusterIP 10.97.229.215 <none> 80/TCP 33s
1
2
3
4
5
6
7
[root@master ~]# kubectl get pod -n weave
NAME READY STATUS RESTARTS AGE
weave-scope-agent-28ckk 1/1 Running 0 14m
weave-scope-agent-fpffk 1/1 Running 0 14m
weave-scope-agent-qgrz8 1/1 Running 0 14m
weave-scope-app-6cbf5dbc45-bdv5f 1/1 Running 0 14m
weave-scope-cluster-agent-5d7f64677b-djnhm 1/1 Running 0 14m
  • DaemonSet weave-scope-agent,集群每个节点上都会运行的 scope agent 程序,负责收集数据。
  • Deployment weave-scope-app,scope 应用,从 agent 获取数据,通过 Web UI 展示并与用户交互。
  • Service weave-scope-app,默认是ClusterIP类型,为了方便已通过 kubectl edit 修改为 NodePort
1
2
3
[root@k8s-master mainfests]# kubectl edit svc/weave-scope-app -n weave
将service的type改为NodePort
service/weave-scope-app edited
1
2
3
[root@master ~]# kubectl get svc -n weave
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
weave-scope-app NodePort 10.102.221.35 <none> 80:32224/TCP 18m

(2)使用 Scope

浏览器访问 http://192.168.1.108:32224/ Scope 默认显示当前所有的 Controller(Deployment、DaemonSet 等)。

Scope-1

(3)拓扑结构

Scope 会自动构建应用和集群的逻辑拓扑。比如点击顶部 PODS,会显示所有 Pod 以及 Pod 之间的依赖关系。

Scope-2

点击 HOSTS,会显示各个节点之间的关系。

Scope-3

(4)实时资源监控

可以在 Scope 中查看资源的 CPU 和内存使用情况。 支持的资源有 Host、Pod 和 Container。

Scope-4

(5)在线操作

可以查看 Pod 的日志:

Scope-5

点击 Deployment 的 + 可以执行 Scale Up 操作:

Scope-6

(6)强大的搜索功能

Scope 支持关键字搜索和定位资源。

Scope-7


Kubernetes之Weave Scope集群监控
https://system51.github.io/2019/08/26/Kubernetes-Weave-Scope/
作者
Mr.Ye
发布于
2019年8月26日
许可协议