- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章微服务故障排除方面的优秀实践由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
人们听到“微服务”时,常常想到Kubernetes,这是一种声明式容器编排系统。由于具有声明性,Kubernetes将微服务视作实体,这在故障排除方面带来了一些难题。不妨看看为什么在Kubernetes环境下为微服务排除故障可能具有挑战性,以及一些相应的最佳实践.
想了解为什么为微服务排除故障可能具有挑战性,不妨看一个例子.
如果您在Kubernetes中有一个应用程序,就可以将它部署为pod,利用Kubernetes对其进行扩展。该实体是您可以监控的pod。若使用微服务,您不应该监控pod;相反,应该监控服务。所以您可能拥有整体式工作负载(部署为pod的单个容器)并对其进行监控,但如果您的服务由几个不同的pod组成,就需要了解这些pod之间的相互关系,才能明白服务是如何运行的,以及进行监控,如果不这么做,您认为的事件可能不是真正的事件(即可能对服务的运作并不重要).
说到监控微服务,您需要在服务层面、而不是在pod层面进行监控。如果您尝试在pod层面进行监控,将与编排系统发生冲突,并且可能出岔子.
为微服务排除故障时,网络、基础架构和应用程序等问题都很常见.
网络层面的问题最难调试。如果问题出在网络上,您需要查看套接字层统计信息。底层网络拥有将A点连接到B点的套接字,因此您需要在网络层面查看往返时间,看看数据包是否在传输、是否存在路由问题等.
pod重新启动时,基础架构问题会显露出来(Kubernetes中的崩溃循环)。发生这种情况的原因有很多。比如说,如果您的服务中有一个pod无法访问Kubernetes数据存储,Kubernetes会重新启动它。您需要跟踪支持该服务的那些pod的状态。如果您看到数次或频繁的pod重新启动,这就成了问题.
另一个常见的基础架构问题是Kubernetes API服务器过载,需要很长的时间才能响应。每当需要执行某个操作,pod都要与API服务器通信——因此,如果API服务器过载,这就成了问题.
第三个基础架构问题与域名系统(DNS)有关。在Kubernetes中,您的服务由名称来标识,名称则由DNS服务器来解析。如果这些解析很慢,您会开始看到问题.
有几个常见的应用程序问题可能导致重新启动和错误。比如说,如果您的服务负载均衡未起作用,比如说由于您的URL发生了变化或者负载均衡系统没有执行正确的操作,就可能会导致某一个pod过载,从而导致它重新启动.
如果您的URL构建不正确,您会收到响应代码“404页面未找到”。如果服务器过载,您会收到500错误。这些是应用程序问题,只不过表现为基础架构问题.
以下是有效识别和排除微服务问题的两个最佳实践.
您需要使用一款工具来提供在服务层面聚合的数据(即日志),以便可以查看出现了多少次pod重新启动和错误代码等。这与当今大多数DevOps工程师使用的方法不同;在后一种方法中,每次pod重新启动都是单独的警报,导致工程师陷入到可能只是正常操作或Kubernetes自我纠正的警报中.
一些DevOps工程师可能想知道是否可以使用服务网格来聚合数据。虽然服务网格内置了可观察性工具,但您要小心:由于涉及大量数据,许多服务网格会采样数据;它们为您提供了原始数据,并提供了标签,以便您自行聚合数据。您真正需要的是一种工具,为您仅提供服务所需的数据以及服务层面的报告机制.
在试图识别和解决微服务问题时,您需要监控属于服务的每个pod在如何运行。这意味着监控延迟、进程重启次数和网络连接错误等度量指标。有两种方法可以做到这一点:
参考:https://www.kubernetes.org.cn/9812.html 。
最后此篇关于微服务故障排除方面的优秀实践的文章就讲到这里了,如果你想了解更多关于微服务故障排除方面的优秀实践的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在单元格中有这样的文字:Sum(d5:d10),请注意没有“=”。我想在另一个带有“=”的单元格中使用此文本,并计算范围 d5:d10 之和的结果,我想要的返回不是文本。 我的目的不是计算总和,但我想
我在 java 中创建了这个方法,用于指示整数数组是否已排序。它的复杂性是什么?我想如果好的是最坏情况下的 O(1) 是平均情况下的 O(n)? static boolean order(int[]
1.什么样的人,才能称得上“优秀”? 其实就看这三点: (1)普通的人改变结果; (2)优秀的人改变原因; (3)顶级优秀的人改变模型。 2.举个例子: 有一家公司为员工提供午餐和晚餐。 吃着吃着,大
我在表中有一个具有以下公式的列 =IF([@[JoBM]]>0; IF([@[JoBF]]>0;[@[Median1]]/[@[Median2]];"-");"-") 该列看起来像这样:0.9、0.8
根据他们的工作,您如何区分出色的 SQL 开发人员? 示例可能包括: 很少使用 CURSOR,并试图将它们重构掉。 很少使用临时表,并试图将它们重构掉。 自信地处理 OUTER JOIN 中的 NUL
我是一名优秀的程序员,十分优秀!