Weave Scope 容器地图
 
创建 Kubernetes 集群并部署容器化应用只是第一步。一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足够的资源满足应用的需求。Kubernetes 是一个复杂系统,运维团队需要有一套工具帮助他们获知集群的实时状态,并为故障排查提供及时和准确的数据支持。
 
Weave Scope 是 Docker 和 Kubernetes 可视化监控工具。Scope 提供了至上而下的集群基础设施和应用的完整视图,用户可以轻松对分布式的容器化应用进行实时监控和问题诊断。
 
Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解、监控和控制容器。千言万语不及一张图,先感受一下。
 
 

 
 
Weave Scope部署
 
1)进入到kubernetes目录下找到scope.yml文件。
[root@cicd kubernetes]# ls
bash ca harbor-offline-installer-v1.4.0.tgz image.tar.gz kube-yunwei-.tar.gz sock-shop
bin ca.tar.gz image k8s197.tar.gz scope.yaml

2)创建weave名称空间

[root@cicd kubernetes]# kubectl create namespace weave

2)安装scope,执行如下命令:
#kubectl apply -f scope.yaml
 
 
部署成功后,有如下相关组件:
[root@cicd kubernetes]# kubectl get pod -n weave
NAME READY STATUS RESTARTS AGE
weave-scope-agent-4xw7b / Running 2h
weave-scope-agent-cll6f / Running 2h
weave-scope-agent-nfl8c / Running 2h
weave-scope-app-5969c9bc78-fmm4s / Running 2h
[root@cicd kubernetes]# kubectl get svc -n weave
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
weave-scope-app NodePort 10.68.210.240 <none> :/TCP 2h

注意port端口号,用来浏览器访问。

  1. DaemonSet weave-scope-agent,集群每个节点上都会运行的 scope agent 程序,负责收集数据。
  2. Deployment weave-scope-app,scope 应用,从 agent 获取数据,通过 Web UI 展示并与用户交互。
  3. Service weave-scope-app,默认是 ClusterIP 类型,为了方便已通过 kubectl edit 修改为 NodePort。
 
使用weavescope
 
登陆weavescope
浏览器访问 http://ip:33274/,Scope 默认显示当前所有的Controller(Deployment、DaemonSet 等)。
 

 

拓扑结构

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

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

实时资源监控

可以在 Scope 中查看资源的 CPU 和内存使用情况。

支持图,表,柱状图显示
 
 

 

在线操作

Scope 还提供了便捷的在线操作功能,比如选中某个 Host,点击 >_ 按钮可以直接在浏览器中打开节点的命令行终端:
 
 
点击 Deployment 的 + 可以执行 Scale Up 操作:
 
可以 attach、restart、stop 容器,以及直接在 Scope 中排查问题:
 
详细信息包括这么几部分:
Status:CPU、内存的实时使用情况以及历史曲线。
INFO:容器 image、启动命令、状态、网络等信息。
以下几项需拉动滚动条查看。
 

PROCESSES:容器中运行的进程。

ENVIRONMENT VARIABLES:环境变量。
DOCKER LABELS:容器启动命令。
IMAGE:镜像详细信息。

在容器信息的上面还有一排操作按钮。

上图:左边框为atach按钮,右边框为exec按钮。一个是继续进程,一个是重开终端。

attach 到容器启动进程,相当于执行 docker container attach
打开shell,相当于执行docker container exec
重启容器,相当于执行 docker container restart
暂停容器,相当于执行 docker container pause
关闭容器,相当于执行 docker container stop
 

强大的搜索功能

Scope 支持关键字搜索和定位资源。
 
还可以进行条件搜索,比如查找和定位 cpu > 1% 的 Containers 。
 
Weave Scope 界面极其友好,操作简洁流畅。
 
 
 
 
二、用 Heapster 监控集群:
Heapster介绍
 
Heapster 是 Kubernetes 原生的集群监控方案。Heapster 以 Pod 的形式运行,它会自动发现集群节点、从节点上的 Kubelet 获取监控数据。Kubelet 则是从节点上的 cAdvisor 收集数据。
 
Heapster 将数据按照 Pod 进行分组,将它们存储到预先配置的 backend 并进行可视化展示。Heapster 当前支持的 backend 有 InfluxDB(通过 Grafana 展示),Google Cloud Monitoring 等。Heapster 的整体架构如下图所示:
 
Heapster 本身是一个 Kubernetes 应用,部署方法很简单,之前章节中我们实践了由 Heapster、InfluxDB 和 Grafana 组成的监控方案。Kubelet 和 cAdvisor 是 Kubernetes 的自带组件,无需额外部署。
 
 

部署步骤:

1)查看docker容器,并进入下载有ansible组件的容器。
[root@cicd kubernetes]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
415b685b8ace 1acb4fd5df5b "/bin/sh" days ago Up days keen_noyce
22c236dd2666 1acb4fd5df5b "/bin/sh" days ago Up days eloquent_bhabha
[root@cicd kubernetes]# docker exec -it 415b685b8ace /bin/sh
2)进入之前配置的/etc/ansible/manifest/heapster目录下,执行:
[root@cicd kubernetes]# docker exec -it 415b685b8ace /bin/sh
/ # cd /etc/ansible//etc/ansible # ls
.prepare.yml .docker.yml .kube-node.yml .clean.yml bin hosts roles
.etcd.yml .kube-master.yml .network.yml ansible.cfg example manifests tools
/etc/ansible # cd manifests/
/etc/ansible/manifests # ls
coredns dashboard efk heapster ingress kubedns
/etc/ansible/manifests # cd heapster/
/etc/ansible/manifests/heapster # ls
grafana.yaml heapster.yaml influxdb-v1.1.1 influxdb-with-pv influxdb.yaml
/etc/ansible/manifests/heapster # kubectl apply -f .
 
3)查看kube-system里的pod状态和service状态
/etc/ansible/manifests/heapster # kubectl get pod -n kube-system  -o wide
NAME READY STATUS RESTARTS AGE IP NODE
calico-kube-controllers-754c88ccc8-fm9kn / Running 4d 192.168.253.11 192.168.253.11
calico-node-62wzk / Running 4d 192.168.253.14 192.168.253.14
calico-node-lszzj / Running 4d 192.168.253.10 192.168.253.10
calico-node-nvtwd / Running 4d 192.168.253.11 192.168.253.11
coredns-6ff7588dc6-62nnv / Running 9h 172.20.104.44 192.168.253.11
coredns-6ff7588dc6-f6d4z / Running 4d 172.20.104.1 192.168.253.11
heapster
-7f8bf9bc46-l8qv5 / Running 3h 172.20.104.60 192.168.253.11
kubernetes-dashboard-545b66db97-mmt6p / Running 9h 172.20.104.43 192.168.253.11
monitoring-grafana-64747d765f-rb59j / Running 3h 172.20.135.23 192.168.253.10
monitoring-influxdb-565ff5f9b6-m99z8 / Running 3h 172.20.135.21 192.168.253.10

/etc/ansible/manifests/heapster # kubectl get svc -n kube-system -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
coredns ClusterIP 10.68.0.2 <none> /UDP,/TCP 4d k8s-app=coredns
heapster ClusterIP 10.68.198.107 <none> /TCP 3h k8s-app=heapster
kubernetes-dashboard NodePort 10.68.6.114 <none> :/TCP 4d k8s-app=kubernetes-dashboard
monitoring-grafana ClusterIP 10.68.59.90 <none> /TCP 3h k8s-app=grafana
monitoring-influxdb ClusterIP 10.68.11.36 <none> /TCP 3h k8s-app=influxdb
4)生成集群链接地址
/etc/ansible/manifests/heapster # kubectl cluster-info
Kubernetes master is running at https://192.168.253.14:6443
CoreDNS is running at https://192.168.253.14:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy
kubernetes-dashboard is running at https://192.168.253.14:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
monitoring-grafana is running at https://192.168.253.14:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy

并打开浏览器访问。

 

 
 
 如果需要下载grafana
 

 

kubernets监控的更多相关文章

  1. 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes

    1.浅析整个监控流程 heapster以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.网络流量等,然后将这些数据输出到外部存储,如Inf ...

  2. Prometheus监控⼊⻔简介

    文档目录: • prometheus是什么?• prometheus能为我们带来些什么• prometheus对于运维的要求• prometheus多图效果展示 1) Prometheus是什么pro ...

  3. 详解k8s原生的集群监控方案(Heapster+InfluxDB+Grafana) - kubernetes

    1.浅析监控方案 heapster是一个监控计算.存储.网络等集群资源的工具,以k8s内置的cAdvisor作为数据源收集集群信息,并汇总出有价值的性能数据(Metrics):cpu.内存.netwo ...

  4. 介绍Kubernetes监控Heapster

    什么是Heapster? Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS,Kubernetes有个出名的监控agent—cAdvisor.在每个kubern ...

  5. kubernets基础

    1.定义和功能. 1.1定义:kubernets解释为舵手或者飞行员,以Borg为主衍生出. 1.2功能:自动装箱,自我修复,水平扩展,服务发现和负载均衡,自动发布和回滚. 密钥和配置管理,存储编排, ...

  6. Kubernets 第一讲 初探

    1.kubernets的工作流程 (1)开始部署新的应用程序,使用kubectl客户端工具和一个准备好的包含应用程序的Deployment的yaml文件:用户通过kubectl命令将文件的内容发送给A ...

  7. Kubernetes监控:部署Heapster、InfluxDB和Grafana

    本节内容: Kubernetes 监控方案 Heapster.InfluxDB和Grafana介绍 安装配置Heapster.InfluxDB和Grafana 访问 grafana 访问 influx ...

  8. 【01】Kubernets:捋一捋概念性东西

    写在前面的话 docker 先告一段,现在开始进入 Kubernets(K8S) 的学习阶段,在学习过程中,可结合之前学的 docker swarm 比对着理解. 啥是 K8S 先来看一下两个 log ...

  9. kubernets之机理概览

    一  了解kubernets的运行机理 1.1  了解架构 众所周知,kubernets的组成由2个部分组成 kubernets  平面 node节点  (工作节点) 控制平面的组成 etcd  分布 ...

随机推荐

  1. mybatis返回map结果集

    今天突发奇想,想用mybatis返回一个map结果集,结果我就整了一下午,不过终于解决了 1.如果你确定返回的数据只有一条,你可以这样整 xml中: <select id="searc ...

  2. ssh远程登录故障解决方案

    问题描述: xshell远程连接服务器连接不上,如下图所示: 故障排除: . 首先查看自己系统的防火墙是否关闭,没有关闭的话关闭一下. # centos 7中关闭防火墙命令: systemctl st ...

  3. 为什么对华为不拍Arm?

    华为可以靠着现有的 ARMv8 授权坚持很长一段时间,足以等到这波科技禁运结束. 今天,华为在美国遭遇的科技禁运上升到了全球新高度. 据 BBC 报道,由软银全资拥有的英国技术公司 Arm 向员工发出 ...

  4. 解决CRMEasy新建咨询不能保存问题

    系统时间必须为24H制 将12H制修改为24H制的方法:(XP系统) 控制面板---区域和语言选项----区域选项-----自定义---时间----时间格式为:HH:mm:ss-----确定

  5. java面试(反射)05

    1.什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取类信息以及动态调用对象内容就称为jav ...

  6. [工具] BurpSuite--快速生成CSRF POC

    我们使用工具分析出存在csrf漏洞时,可以快速生成这个请求的poc,下面我们来看看怎么快速生成 0x00 上图是通过proxy,点击action,选择上图的选项即可生成这个请求的CSRF Poc了 当 ...

  7. multi gpu inference with tfserving or keras

    在tfserving上,目测只能在每个gpu上起docker    https://github.com/tensorflow/serving/issues/311#issuecomment-4801 ...

  8. SQLSERVER调用OPENROWSET的方法

    前言:正好这两天在同步生产环境的某张表数据到测试环境,之前用过一些同步数据软件,感觉不太可靠,有时候稍有操作不当,就会出现生产环境数据被清空等情况,还要去恢复数据.如果能恢复还好,不能恢复那么.... ...

  9. Linux安装redis,启动配置不生效(指定启动加载配置文件)

    一.今天有个同学问我,为什么明明安装了redis,修改了配置,启动的时候,配置还是不生效.如下图是安装后的redis文件图. 二.想加载上图中的redis.conf,进入到src中寻找到启动文件red ...

  10. SpringMVC @PathVariable注解

    下面用代码来演示@PathVariable传参方式 @RequestMapping("/user/{id}") public String test(@PathVariable(& ...