Kubernetes最佳实践 正确终止禁用

Kubernetes最佳实践创建小型容器
Kubernetes最佳实践。具有Kubernetes
最佳实践命名空间的Kubernetes组织。 Kubernetes可行性测试与就绪性和活力测试Kubernetes
最佳实践。配置请求和资源限制



分布式系统操作中的重要一点是处理故障。 Kubernetes通过使用控制器来监视系统状态并重新启动已停止工作的服务,从而对此提供帮助。但是,Kubernetes可以强制关闭您的应用程序以确保整个系统的可行性。在本系列中,我们将研究如何帮助Kubernetes更有效地完成其工作并减少应用程序停机时间。

在使用容器之前,大多数应用程序都在虚拟机或物理机上运行。如果应用程序崩溃或崩溃,则需要很长时间才能删除正在进行的任务并重新下载程序。在最坏的情况下,有人必须在最不合时宜的夜晚手动解决此问题。如果只有1-2台工作机执行一项重要任务,那么这种故障是完全不能接受的。
因此,他们开始使用进程级别的监视来在异常终止的情况下自动重新启动应用程序,而不是手动重新启动。如果程序崩溃,监视过程将捕获退出代码并重新启动服务器。随着诸如Kubernetes之类的系统的出现,这种类型的系统故障响应已被简单地集成到基础架构中。

Kubernetes使用“观察-提交差异-提交”事件循环来确保资源在从容器到节点本身的整个过程中都是可操作的。



这意味着您不再需要手动启动过程监视。如果资源未通过运行状况检查,Kubernetes将简单地自动提供替换。 Kubernetes不仅可以监视您的应用程序崩溃。它可以创建应用程序的更多副本以在多台计算机上工作,更新应用程序或同时运行应用程序的多个版本。
因此,Kubernetes可以中断一个非常健康的容器有很多原因。例如,如果升级部署,Kubernetes将在启动新Pod的同时缓慢停止旧Pod。如果断开节点的连接,Kubernetes将终止该节点上的所有炉床。最后,如果节点资源不足,Kubernetes将禁用所有Pod释放这些资源。

因此,非常重要的一点是,您的应用程序停止工作对最终用户的影响应最小,而恢复时间也应尽可能短。这意味着在断开连接之前,它必须保存所有需要保存的数据,关闭所有网络连接,完成剩余的工作,并有时间完成其他紧急任务。

实际上,这意味着您的应用程序应该能够处理SIGTERM消息-进程终止信号,这是Unix系列OS中kill工具的默认信号。收到此消息后,应用程序应断开连接。

在Kubernetes决定完成吊舱之后,发生了一系列的事件。让我们看一下容器或炉床完成时Kubernetes采取的每个步骤。

假设我们要完成其中一个炉床。在这一点上,它将停止接收新的流量-在炉膛中工作的容器不会受到影响,但是所有新的流量都将被阻止。



让我们看一下preStop挂钩-这是发送到炉膛中容器的特殊命令或HTTP请求。如果收到SIGTERM时应用程序未正确关闭,则可以使用preStop正确退出。



大多数程序在收到SIGTERM信号时都可以正确完成其工作,但是,如果您使用第三方代码或无法完全控制的某些系统,则preStop挂钩是一种在不更改应用程序的情况下正常关闭的好方法。

执行完此钩子后,Kubernetes将向壁炉中的容器发送SIGTERM信号,这将使他们知道它们将很快断开连接。收到此信号后,您的代码将进入关机过程。此过程可能包括停止任何长期存在的连接,例如连接到数据库或WebSocket流,保存当前状态等。

即使您使用preStop挂钩,在向您的应用程序发送SIGTERM信号时,检查应用程序会发生什么情况也很重要,它的行为方式会导致炉床关闭导致事件或系统操作发生变化,这并不会让您感到惊讶。

此时,在采取进一步行动之前,Kubernetes将等待一个指定的时间,称为TerminationGracePeriodSecond,或者它在收到SIGTERM信号后正确关闭的时间段。



默认情况下,此时间段是30秒。重要的是要注意,它与preStop挂钩和SIGTERM信号并行运行。 Kubernetes不会等待preStop挂钩和SIGTERM结束-如果您的应用程序在TerminationGracePeriod到期之前退出,Kubernetes将立即进行下一步。因此,请确保该时间段的秒数不小于炉床正确关闭所需的时间,如果超过30 s,则将时间段增加到YAML中的所需值。在上面的示例中,它是60s。

最后,最后一步-如果终止TerminationGracePeriod过期后容器仍继续工作,则它们将发送SIGKILL信号并被强制删除。此时,Kubernetes还将清除所有其他pod对象。



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