Weave Scope是Docker和Kubernetes的可视化和监视工具。它提供了自上而下的应用程序视图以及整个基础架构视图,并允许您实时诊断将分布式容器化应用程序部署到云提供商时遇到的任何问题。
github开源项目地址: https://github.com/weaveworks/scope
简介
Weave Scope可以监控Kubernetes集群的一系列资源的状态、资源使用情况、应用拓扑、还可以直接通过UI界面进行调式查看日志等操作
- 实时了解您的Docker容器
- 选择您的容器基础架构的概述,或专注于特定的微服务。轻松识别并纠正问题,以确保容器化应用程序的稳定性和性能。
- 上下文细节和深层链接
- 查看容器的上下文指标,标签和元数据。毫不费力地在容器内部的进程之间导航,以托管运行在可扩展,可排序表中的容器。对于给定的主机或服务,使用最多CPU或内存的容器即可轻松找到该容器。
- 与容器交互和管理
- 直接与您的容器进行交互:暂停,重新启动和停止容器。启动命令行。所有这些都无需离开示波器浏览器窗口。
- 通过插件扩展和自定义
- 通过创建范围插件,为主机,容器和/或进程添加自定义详细信息或交互。或者,仅从其他人已经在GitHub Weaveworks Scope插件组织中撰写的内容中进行选择。
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
查看是否生效
[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端口即可
使用traefik方式访问
如果设置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
由于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
密码为我们设置的
拓扑结构
scope会自动构建应用和集群的逻辑拓扑,比如点击顶部Pos,会显示所有的Pod以及Pod相关的依赖关系
我这里就一个weave-scope项目,但是我们在里面也可以看到架构了
点击Host
,可以看到各个节点之间的关系
实时资源监控
可以在Scope中查看资源的CPU和内存使用情况,并且支持HOST、Pod和Container
在线操作
scope还提供了便捷的Web终端,点击>_
安全可以直接在浏览器中打开节点的命令行终端
也可以进入Pod查看实时日志
还可以随时加减Pod数量
也可以对容器进行attach、restart、top等操作
强大
在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
>scope还提供了便捷的Web终端,点击>_安全可以直接在浏览器中打开节点的命令行终端
我这边打不开, 提示probe xxx connected right now.