Kubernetes最佳实践 Kubernetes生存能力测试与就绪和活力测试

Kubernetes最佳实践创建小型容器
Kubernetes最佳实践。具有名称空间的Kubernetes组织由于



分布式系统具有许多可移动的可变元素,因此它们很难管理,并且所有这些元素都必须正常工作以确保系统的功能。如果其中一个元素发生故障,则系统必须对其进行检测,旁路和修复,并且所有这些必须自动完成。在这个Kubernetes最佳实践系列中,我们将学习如何配置就绪和活跃性测试以测试Kubernetes集群的生存能力。

运行状况检查运行状况检查是一种让系统知道您的应用程序实例是否正在运行的简便方法。如果您的应用程序实例不起作用,则其他服务不应访问它或向其发送请求。而是应将请求发送到已运行的应用程序的另一个实例,或者稍后再启动。此外,系统应使您的应用程序恢复功能。

默认情况下,当炉膛内的所有容器都运行时,Kubernetes将开始将流量发送到Pod,并在它们崩溃时重新加载容器。对于初学者而言,此默认系统行为可能已经足够好,但是您可以使用自定义运行状况检查来提高部署产品的可靠性。



幸运的是,Kubernetes允许您非常简单地执行此操作,因此没有任何借口可以忽略此类检查。 Kubernetes提供两种类型的运行状况检查测试,了解每种应用程序之间的差异非常重要。

准备就绪测试旨在告诉Kubernetes您的应用程序已准备好为流量提供服务。在允许服务将流量发送到Pod之前,Kubernetes必须验证可用性检查是否成功。如果就绪测试失败,则Kubernetes将停止向Pod发送流量,直到测试成功为止。

Liveness Viability Test告诉Kubernetes您的应用程序是存活还是死亡。在第一种情况下,Kubernetes将让他一个人呆着,在第二种情况下,他将移走死掉的豆荚,然后换上一个新的豆荚。

让我们想象一个场景,其中您的应用程序需要1分钟来“热身”并运行。尽管工作流已经开始,但您的服务将在应用程序完全加载并启动后才能开始工作。如果要将此部署的规模扩大到几个副本,也会遇到问题,因为这些副本在完全准备好之前不会接收流量。但是,默认情况下,Kubernetes将在容器内的进程启动后立即开始发送流量。

使用Readiness Readiness测试时,Kubernetes将等到应用程序完全启动后才允许该服务将流量发送到新副本。



让我们想象一下另一种情况,其中应用程序长时间冻结,停止服务请求。由于该过程继续运行,因此默认情况下,Kubernetes会认为一切正常,并继续将请求发送到不工作的Pod。但是当使用Liveness时,Kubernetes将检测到该应用程序不再为请求提供服务,并且默认情况下将重新启动无法正常工作的Pod。



考虑如何测试准备和活力。有三种测试方法-HTTP,ommand和TCP。您可以使用它们中的任何一个进行验证。最常见的用户测试方法是HTTP探针。

即使您的应用程序不是HTTP服务器,您仍然可以在应用程序内部创建轻量级的HTTP服务器以与Liveness测试进行交互。之后,Kubernetes将开始对Pod进行ping操作,如果HTTP响应在200或300 ms的范围内,则表明Pod是“健康的”。否则,模块将被标记为“不健康”。



对于使用Command的测试,Kubernetes在您的容器内执行命令。如果命令返回的退出代码为零,则该容器将被标记为正常,否则,当退出状态号为1到255时,该容器将被标记为“病态”。如果您不能或不想启动HTTP服务器,但是您能够运行将检查应用程序运行状况的命令,则此测试方法很有用。



最终的验证机制是TCP测试。 Kubernetes将尝试在指定端口上建立TCP连接。如果可以做到,则认为该容器是健康的,否则,将不可行。如果您使用的脚本无法很好地进行HTTP请求或命令执行的测试,则此方法可能会派上用场。例如,用于TCP检查的主要服务将是gRPC或FTP。



可以使用各种参数以多种方式配置测试。您可以指定执行它们的频率,成功和失败的阈值是多少,以及等待答案的时间。有关更多信息,请参见准备和活力测试文档。但是,设置活动度测试有一个非常重要的要点-initialDelaySeconds测试延迟的初始设置。如前所述,如果测试失败,将重启模块。因此,您需要确保在准备好使用该应用程序之前不会开始测试,否则它将开始循环运行。我建议使用P99启动时间或缓冲区中平均应用程序启动时间。不要忘记将该值调整为随着应用程序启动时间变得越来越快。

大多数专家会确认,对于任何分布式系统,运行状况检查都是必需的检查,而Kubernetes也不例外。使用服务的“健康”检查可确保Kubernetes可靠且正常运行,并且不会对用户造成任何影响。

即将继续...


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles