Kubernetes 监控工具 Weave Scope

Scope构建您的应用程序和基础结构的逻辑拓扑。拓扑是节点和边的集合,其中节点代表对象,例如流程,容器或主机。在范围中,边缘表示节点之间的TCP连接。可以过滤和查看不同的节点类型,并且可以深入查看和检查特定的微服务。节点以特定的顺序与服务器上方的客户端一起呈现。通常,您可以从上到下阅读“ Weave Scope”视图。


Weave Scope是Docker和Kubernetes的可视化和监视工具。它提供了自上而下的应用程序视图以及整个基础架构视图,并允许您实时诊断将分布式容器化应用程序部署到云提供商时遇到的任何问题。

github开源项目地址: https://github.com/weaveworks/scope

简介

Weave Scope可以监控Kubernetes集群的一系列资源的状态、资源使用情况、应用拓扑、还可以直接通过UI界面进行调式查看日志等操作

  • 实时了解您的Docker容器
  • 选择您的容器基础架构的概述,或专注于特定的微服务。轻松识别并纠正问题,以确保容器化应用程序的稳定性和性能。
  • 上下文细节和深层链接
  • 查看容器的上下文指标,标签和元数据。毫不费力地在容器内部的进程之间导航,以托管运行在可扩展,可排序表中的容器。对于给定的主机或服务,使用最多CPU或内存的容器即可轻松找到该容器。
  • 与容器交互和管理
  • 直接与您的容器进行交互:暂停,重新启动和停止容器。启动命令行。所有这些都无需离开示波器浏览器窗口。
  • 通过插件扩展和自定义
  • 通过创建范围插件,为主机,容器和/或进程添加自定义详细信息或交互。或者,仅从其他人已经在GitHub Weaveworks Scope插件组织中撰写的内容中进行选择。

image_1e1shs16jqrvhv91edhgul1n899.png-239.2kB

Weave Scope由App和Probe两部分组成

  • Probe负责收集容器和宿主的信息,并发送给App
  • App负责处理这些信息,并生成相应的报告,并以交互界面的形式展示

安装Weave Scopea

kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"

执行完毕后,我们就可以看到创建的资源

$ kubectl get deployments.apps,daemonset,svc -n weave
NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/weave-scope-app             1/1     1            1           2m7s
deployment.apps/weave-scope-cluster-agent   1/1     1            1           2m6s

NAME                                     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.extensions/weave-scope-agent   3         3         3       3            3                     2m6s

NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
service/weave-scope-app   ClusterIP   10.254.104.150           80/TCP    2m6s

DaemonSet weave-scope-agent 集群每个节点上都会运行的scope agent程序,负责收集数据

Deployment weave-scope-app scope应用,从agent获取数据,通过Web UI展示并与用户交互

Service weave-scope-app 默认是ClusterIP类型 (我这里提供nodeport和traefik)

创建完毕后,目前我们无法直接访问,默认的svc类型为ClusterIP,这里我提供2种方式

使用nodePort方式访问

#使用nodeport方式比较简单,直接edit编辑svc即可
kubectl edit service -n weave  weave-scope-app

image_1e1silp5t7btjd510o2cl6iqv13.png-91.1kB

查看是否生效

[root@k8s-01 ~]# kubectl get svc -n weave
NAME              TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
weave-scope-app   NodePort   10.254.104.150           80:30001/TCP   12m

接下来浏览器访问即可

ip+30001端口即可

image_1e1siohputoj17e310np1jmi1d5i1g.png-238kB

使用traefik方式访问

Kubernetes Traefik Ingress

4941

如果设置traefik访问,需要删除nodeport,并且将集群修改为ClusterIP

kubectl get svc -n weave
NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
weave-scope-app   ClusterIP   10.254.104.150           80/TCP    29m

创建ingress文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: weave-scope-app-ingress
  namespace: weave
spec:
  rules:
  - host: "scope.i4t.com"
    http:
      paths:
      - backend:
          serviceName: weave-scope-app
          servicePort: 80

查看ingress

[root@k8s-01 ~]# kubectl get ingress -n weave weave-scope-app-ingress
NAME                      HOSTS           ADDRESS   PORTS   AGE
weave-scope-app-ingress   scope.i4t.com             80      21m
[root@k8s-01 ~]# kubectl describe ingress -n weave weave-scope-app-ingress
Name:             weave-scope-app-ingress
Namespace:        weave
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host           Path  Backends
  ----           ----  --------
  scope.i4t.com
                    weave-scope-app:80 (172.30.8.3:4040)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"weave-scope-app-ingress","namespace":"weave"},"spec":{"rules":[{"host":"scope.i4t.com","http":{"paths":[{"backend":{"serviceName":"weave-scope-app","servicePort":80}}]}}]}}

Events:  

接来下我们修改host

IP scope.i4t.com

image_1e1slnq2f1smh1o4s1d2314l1pst1t.png-48.7kB

image_1e1slodh11uavu5q47h9ol522a.png-197.8kB

由于Weave Scope页面默认没有用户管理的认知,基于安全考虑,我们配置一个basic auth密码认证

首先创建一个认证文件

[root@k8s-01 ~]# htpasswd -c auth admin
New password:
Re-type new password:
Adding password for user admin

#用户名称为admin

为认证文件创建secret

[root@k8s-01 ~]# kubectl create secret generic authsecret --from-file auth --namespace=weave
secret/authsecret created


#创建名称为authsecret的secret,位于weave命名空间下

更新ingress配置

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: weave-scope-app-ingress
  namespace: weave
  annotations:
    kubernetes.io/ingress.class: traefik
    ingress.kubernetes.io/auth-type: "basic"
    ingress.kubernetes.io/auth-secret: "authsecret"
spec:
  rules:
  - host: "scope.i4t.com"
    http:
      paths:
      - backend:
          serviceName: weave-scope-app
          servicePort: 80

[root@k8s-01 ~]# kubectl apply -f  weave.yaml
ingress.extensions/weave-scope-app-ingress configured

账号为admin

密码为我们设置的

image_1e1sov1bdgrjv7r1bml1hil1r8c34.png-158.5kB


拓扑结构

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

我这里就一个weave-scope项目,但是我们在里面也可以看到架构了

image_1e1sp68sbjl8e3dq7714pm8gg3h.png-260.5kB

点击Host,可以看到各个节点之间的关系

image_1e1sp8brn1clo12a615td180q4763u.png-171.3kB

实时资源监控

可以在Scope中查看资源的CPU和内存使用情况,并且支持HOST、Pod和Container

image_1e1spa0at1s7d1k3r1fsg1q9q13gc4b.png-170kB

image_1e1spbgh1r2r1ursms51tilth14o.png-244.9kB

在线操作

scope还提供了便捷的Web终端,点击>_安全可以直接在浏览器中打开节点的命令行终端

image_1e1spdspdnc41jph1j9lahk14md55.png-453kB

也可以进入Pod查看实时日志

image_1e1spf8vmmv31f143pd1op1pna5i.png-798.9kB

还可以随时加减Pod数量

image_1e1sphbhqlls1d1qp67bs51p6v5v.png-296kB

也可以对容器进行attach、restart、top等操作

image_1e1spo4u5ts9h4nahj9m91avq6c.png-170.1kB

强大的搜索功能

image_1e1spq34414u9v261u991bhs12ij6p.png-223.1kB

image_1e1spum8l13ls11r6kv1qrr7kq76.png-195.1kB

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
abcdocker运维博客
3 条回复 A 作者 M 管理员
  1. 强大

  2. 在k8s version 1.17,带认证的ingress,ADDRESS为空。有可能是什么原因?
    kubectl get ingress -n ingress

    不带认证的ingress
    ####################################
    NAMESPACE NAME HOSTS ADDRESS
    weave weave-scope-app-ingress scope.i4t.com 192.168.1.102,192.168.1.103,192.168.1.104
    带认证的ingress
    ####################################
    NAMESPACE NAME HOSTS ADDRESS
    weave weave-scope-app-ingress scope.i4t.com

  3. >scope还提供了便捷的Web终端,点击>_安全可以直接在浏览器中打开节点的命令行终端
    我这边打不开, 提示probe xxx connected right now.

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论
k8s分 享 面试宝典
加入我们
  • 站长QQ:381493251一键联系
  • abcdocker 微信公众号
    abcdocker QQ群