ubernetes是容器编排和调度领域的王者,它击败了竞争对手Docker Swarm和Apache Mesos,开启了闪耀的未来,微服务可以自修复,可以自动扩展,可以跨zone,region甚至跨云供应商进行federate。在这样的云原生应用程序的新纪元里,能够以简单的方式洞察服务之间是如何交互的变得日益重要——这可和大海捞针般大范围寻找导致性能问题的某个特定的原因是不一样的。

我们花了些时间研究Netsil并且将其解决方案打包成原生的Kubernetes Deployment。Netsil的应用程序,Application Operations Center (AOC,应用运维中心),帮助用户观察并且收集跨Kubernetes集群运行的微服务应用程序的分析数据。服务本身是不可知的,因为它在网络上才能决定其实际上如何运行。随着时间的推移,并且实时地,它学习并且发现用户的环境,帮助用户逐渐搭建出SLA指标器,警报器等等。

开始吧

首先你需要一个Kubernetes集群。我使用Stackpoint.io快速创建一个集群。在任意主流供应商,比如AWS,GCE或者Azure上创建一个集群。需要确保为你的主节点选择足够大的配置——这是所有收集器会将数据发送这里,在网络,处理器和内存上都可能消耗比较大。worker节点可以是任何配置,只要能够满足微服务应用程序的需求。在我的示例里,使用了较大的实例配置,因为我会将多种服务都推送到这个环境里。

在我们的示例里,使用3个N1标准4的实例构建了一个集群,这些实例通过HAProxy Ingress Controller暴露出去,它是自发现的,并且在部署它们时注册了AOC服务。我们能够使用集群的公开VIP访问AOC仪表盘。

开始前

在仅仅运行了Kubernetes服务的空空的集群上再安装一些服务,这里使用Sock Shop,这是由Weaveworks开发的微服务参考程序。这样有助于模拟一个真实的环境。Sock Shop使用了14个不同的服务,这是很多企业的应用程序会达到的复杂度。现在将AOC添加到我们的环境里。

这里有关于Sock Shop的详细信息。将其推送到环境里很简单,仅仅需要在克隆了repo后运行如下命令即可:

kubectl apply -f deploy/kubernetes/manifests

然后检查Pod是否已经在线了:

$ kubectl get pods --namespace=default NAME READY STATUS RESTARTS AGE cart-3694116665-eccpp 1/1 Running 0 55m cart-db-2305146297-u30g8 1/1 Running 0 55m catalogue-11453786-lkslj 1/1 Running 0 55m catalogue-db-393939662-bn7uc 1/1 Running 0 55m front-end-3820830240–01e6t 1/1 Running 0 55m orders-3498886496-z8jun 1/1 Running 0 55m orders-db-1775353731-u7dmf 1/1 Running 0 55m payment-3012088042-vbfhw 1/1 Running 0 55m queue-master-936560853-ocmxi 1/1 Running 0 55m rabbitmq-1897447621–2ij04 1/1 Running 0 55m shipping-1232389217-b278a 1/1 Running 0 55m spc-balancer-biilo 1/1 Running 0 1h user-3090014237–196pv 1/1 Running 0 55m user-db-1338754314-exyou 1/1 Running 0 55m

开始观察吧

我们已经有了运行着的Kubernetes 1.4集群,并且安装了Sock Shop应用程序,那么开始学习环境里是什么吧。当股票购买者遇到问题时我们是否能知道呢?

在部署AOC之前需要在所有主机上运行如下命令。该命令帮助避免一个已知的Flannel和kube-proxy的竞争问题。

iptables -t nat -I POSTROUTING -o flannel.1 -s host-private-ip -j MASQUERADE

使用每台主机的私有IP替换host-private-ip。完成后,从GitHub克隆AOC Kubernetes repo:

git clone https://github.com/netsil/netsil-kube.git

并且使用如下单个命令将其推送到Kubernetes里:

kubectl apply -f netsil.yml

确保Pod和Service已经在线了。AOC容器可能需要一些时间,但是收集器会被启动并且队列里的数据会被推送进来,因为它们已经开始发现你的环境了。

$ kubectl get po,svc — namespace=netsil NAME READY STATUS RESTARTS AGE collector-7wpaa 1/1 Running 0 1h collector-9o6k4 1/1 Running 0 1h collector-rzekv 1/1 Running 0 4m netsil-vjf5f 1/1 Running 0 1h NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE netsil 10.200.126.143 <nodes> 443/TCP,2001/TCP,2003/TCP,2003/UDP 1h

AOC拓扑有两个主要组件。第一个是作为带有单个副本的Replication Controller的一部分运行的Pod。它运行AOC仪表盘和数据收集的平台。第二个组件是AOC收集器的DaemonSet。它告诉Kubernetes在环境的所有节点上运行一个带有收集器容器的Pod。这些收集器配置为向AOC Pod发送信息。

生成流量

我们将使用Sock Shop的更多工具来模拟网站上的购物行为。这让我们能看到AOC是如何学习流量模式以及我们的通用拓扑的。

你需要知道Sock Shop监听以及运行的前端IP地址和端口:

docker run weaveworksdemos/load-test -h $frontend-ip[:$port] -r 100 -c 2

随着load-test的运行,可以开始看到AOC随着数据的获得被点亮了:

因为AOC作为DaemonSet部署,如果任意Pod销毁了并且在其他地方重新调度,AOC能够继续观测到拓扑,随着Kubernetes的变化而变化。

我很喜欢AOC的一个原因是部署通过服务来组织,并且我能够实时地观察到环境,并且开始深入不同的度量,为了那些可能影响到客户的事情搭建服务级别的警报。因此,当环境像下图一样变红时,我能够获得警报,知道某个服务处在紧急状态,比如Sock Shop里的信用卡和地址端点。

我甚至还可以深入仪表盘,知道承受最大压力的Pod和容器是什么。在本示例里,网络压力最大的容器是flannel Pod。这让我们能够了解最繁忙的服务是哪个,能够帮助我们重新思考配置或者Kubernetes里分发部署的方式。

总结

Netsil的AOC是非常棒的工具,可以帮助用户实时观察环境,随着使用模式的变化而更新。用户可以挖掘历史数据并且添加警报。应用程序随着添加更多的节点会自动扩展,新节点上线后就会在上面启动一个收集器,这样用户能够得到节点从上线到销毁的所有数据。

如果想在自己的Kubernetes环境里使用Application Operations Center,只需要下载这里的manifests就可以了。可以在http://netsil.com学习Netsil和Application Operations Center。

转载于:https://www.cnblogs.com/nongchaoer/p/6283857.html

使用Netsil监控Kubernetes上的微服务相关推荐

  1. 为什么 kubernetes 天然适合微服务

    最近总在思考,为什么在支撑容器平台和微服务的竞争中,Kubernetes 会取得最终的胜出,事实上从很多角度出发三大容器平台从功能方面来看,最后简直是一摸一样. 参考 Docker, Kubernet ...

  2. 服务网格——后 Kubernetes 时代的微服务(前言)

    目录 重要观点 阅读本文之前 Kubernetes vs Service Mesh kube-proxy 组件 kube-proxy 的缺陷 Kubernetes Ingress vs Istio G ...

  3. Service Mesh(服务网格)——后 Kubernetes 时代的微服务

    本文转载自:宋净超的博客 这不是一篇教程,本文试图带您梳理清楚 Kubernetes.Envoy(xDS 协议)以及 Istio Service Mesh 之间的关系及内在联系.本文介绍了 Kuber ...

  4. 使用spring boot+kubernetes构建完整微服务平台

    微服务架构被认为是构建大型复杂系统的最佳理论指导,其采用了分而治之.单一职责.关注点分离等方法论来设计系统架构.微服务的实现方式和思路有很多种,本文简述基于kubernetes的微服务平台建设思路及技 ...

  5. 使用Quarkus在Openshift上构建微服务的快速指南

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! [重磅]到底是什么野生海鲜美味,惹得人们都往泥瓦匠老家买? 作者 | 康仔 来源 | 公众号 ...

  6. 后Kubernetes时代的微服务

    \ 本文要点 \\ 当前微服务架构依然是最流行的分布式系统架构风格.Kubernetes和云原生运动已大规模地重新定义了应用设计和开发中的一些方面.\\t 在云原生平台上,服务仅具备可观测性是不够的. ...

  7. 马斯洛理论告诉你,Kubernetes可以满足微服务的这些需求

    需求层次理论是由心理学家艾伯特·马斯洛设计的,它是一种解释人类动机的心理学理论,它由多层次的人类需求模型组成,通常被描述成金字塔内的等级层次.马斯洛使用诸如生理.安全.归属感和爱.尊重.自我实现和自我 ...

  8. 使用feign调用注解在eureka上的微服务,简单学会微服务

    使用feign调用注解在eureka上的微服务. 首先,确保所有服务(调用方与被调用方)都被注册在同一个eureka服务上. 1. 在调用方添加依赖(万事第一步,加依赖) <dependency ...

  9. apache karaf_未来是Apache Karaf上的微服务架构

    apache karaf 这是Jamie Goodyear的客座博客文章( 博客 , @ icbts ). 他是Savoir Technologies的开源倡导者,Apache开发人员和计算机系统分析 ...

最新文章

  1. php 7编译 phar,编译安装php7
  2. WebBrowser控件打开https站点
  3. xfce4的面板只能看见日期没法看见具体时刻
  4. Postman使用入门
  5. 上传 mp4 格式判断_视频如何转换成通用的MP4格式?按下这个键,10秒就能搞定...
  6. 联想a850 android 5.0 lollipop,手机资讯导报:全新纯净款MotoX运行Android5.0Lollipop视频曝光...
  7. Mysql数据库中的 Group by 语句的特殊之处(select 中的项目不必出现在Group by中)---不建议使用!
  8. python测试系列教程 —— YAML配置文件语法教程
  9. hdoj2044:一只小蜜蜂(递推)
  10. HTML:网页设计案例5
  11. Windows通用文件关联错误恢复
  12. C# 调用Webservice实例
  13. 汽车电子测试相关名词解释
  14. Windows 下使用 Mingw32-make 来执行 Makefile示例
  15. 惠普m154a状态页_惠普m154a感叹号闪烁
  16. ​​​LabVIEW DLL传递一个二维数组报错
  17. 淘宝Push智能文案生成
  18. 笔记本换固态硬盘-华硕K555L
  19. 一文详解四种经典限流算法,面试必备。
  20. 2022年RoboCom机器人开发者大赛CAIR广东省赛本科组第一的心路历程(不定期更新)

热门文章

  1. 经历能让人变得更理智更成熟
  2. 【牛腩新闻发布系统】整合前台04
  3. 深度学习网络模型可视化netron
  4. Python标准库——collections模块的Counter类
  5. 深度学习加速器堆栈Deep Learning Accelerator Stack
  6. 选择最合适的预测性维护传感器
  7. 2021年大数据基础(四):​​​​​​​​​​​​​​​​​​​​​大数据业务分析基本步骤
  8. 用matlab怎么画视电阻率拟断面图,在MATLAB平台上实现可控源音频大地电磁反演数据三维可视化显示...
  9. Python 修改终端输入字体颜色值
  10. Failed to open zip file. Gradle‘s dependency cache may be corrupt (xx)