什么是Kubernetes Operator及其对SRE的重要性

在此博客文章中,咱们将解释Kubernetes Operator,并讨论它如何发展您的SRE解决方案。服务器

Kubernetes是一个开源项目,可“包含”工做负载和服务,并管理部署和配置。Google于2015年发布了Kubernetes,如今由Cloud Native Computing Foundation维护。自发布以来,它已成为一种全球现象。大多数云原生公司都在使用它,SaaS供应商提供商业的预构建版本,甚至还有年度大会!架构

是什么使Kubernetes成为如此基本的服务?一个主要因素是其自动化功能。Kubernetes能够根据其跟踪的指标或工程师的要求自动更改已部署容器的配置,甚至能够部署新容器。让Kubernetes处理这些过程能够节省时间,消除劳累并提升一致性。ide

若是这些好处听起来很熟悉,那多是由于它们与SRE的理念重叠。可是,如何将Kubernetes的自动化归入您的SRE实践中?在这篇博客中,咱们将解释Kubernetes Operator(Kubernetes功能是自定义自动化的核心),并讨论它如何发展您的SRE解决方案。工具

Kubernetes Operator能够作什么?

Jason Dobies和Joshua Wood 在Kubernetes的《运营商:自动化容器编排平台》一书中将运营商描述为“针对其应用的自动化站点可靠性工程师”。考虑到SRE的丰富经验和多样化的工做量,这是一个大胆的声明。那么操做员到底能作什么?对象

Kubernetes操做员完成复杂的任务
操做员能够完成复杂的任务,以在应用程序的输出中实现所需的更改。它能够自动处理如下任务:事件

部署应用
将应用程序更新到新版本
从新配置应用程序设置
根据使用状况上下扩展应用程序
故障处理
创建监控基础架构
没有Kubernetes操做员,工程师将须要完成这些任务。使它们自动化能够节省时间和精力,并使过程和结果一致。资源

Kubernetes Operator控制自定义资源和应用程序

Kubernetes容许您基于特定的应用程序建立和定义自定义资源。定制资源是您的应用程序生成的数据对象,其中包含有关应用程序状态的指标。假设您有一个根据使用状况生成新服务器实例的应用程序。您能够定义自定义资源来检查每一个新实例的RAM和磁盘空间。您还能够将自定义资源定义为应用程序尝试匹配的目标。而后,Kubernetes Operator能够控制应用程序以实现目标自定义资源。若是应用程序正在拆分RAM或磁盘空间不足的服务器,则操做员能够从新配置设置以匹配所需的数量。开发

Kubernetes Operator作出有状态的决策

Kubernetes Operator能够根据应用程序的输出来修改应用程序的配置和用法。这由为该应用程序定义的自定义资源肯定。显示所需状态的自定义资源和显示当前状态的自定义资源造成一个循环。操做员观察当前状态,而后采起措施使应用程序产生所需状态。执行动做后,将从新评估当前状态,并再次开始循环。部署

例如,自定义资源能够根据新服务器实例的物理资源将其定义为某种负载能力。而后,操做员将调整配置,直到新实例达到这些标准。博客

Kubernetes Operator和SRE

若是您使用的是Kubernetes,您会发现构建和实现Operators与您的SRE目标保持一致。

操做员监控,SLI和SLO
在为应用程序开发自定义资源时,您须要选择资源将监视应用程序输出中的哪些信号,以及操做员将应用程序导向的目标。这相似于建立SLI和SLO。

对于Operator和SLI,肯定影响最大的指标的过程类似。在Kubernetes Operator教科书中,Dobies和Wood建议首先查看“四个黄金信号”(来自Google SRE书中的一个概念),以肯定Operator应监控的内容。这些是:

潜伏
交通
失误
饱和
为您的应用程序建立操做员将帮助您了解应为它们设置哪些SLI和SLO。一样,设置SLI和SLO能够帮助您了解操做员应监视的内容。

您可能会注意到,当服务器过载时,您的客户对应用程序的可用性不满意。

您能够设置自定义资源来监视可用磁盘空间。在剩余容量为5%的状况下,您的自定义资源将启动新的服务器实例,从而为客户提供更好的服务。您的SLI将基于可用性并监视磁盘空间。您的SLO可能会指示您须要达到99.9%的可用性以使客户满意,并告知操做员的干预要点。

自动化SRE应用程序部署

您的SRE实践将涉及为服务的每一个新实例按期部署应用程序。例如,您可能但愿在每次实现系统体系结构的新区域时都部署监视应用程序。Kubernetes Operator能够加快这一过程并使之自动化。为了进行监视,Prometheus操做员是Kubernetes开发的首批操做员之一。它会自动将开源监控软件Prometheus的新实例部署并控制到任何目标集群上。

SRE工具表明着对可靠性的投资。实施它们所花费的时间由它们节省的时间支付。建立Operator是一项相似的投资。经过建立操做员,能够节省每一个部署的时间。此外,部署是一致且可靠的。您的SRE实践具备较少的开销,而且能够随您的组织扩展。

操做员与事件管理

能够设置操做员进行调整以处理故障。若是应用程序的自定义资源与指望的结果有所不一样,则操做员将进行更改以进行补偿,直到达到指望的状态。变化的缘由与操做员无关。它仅基于当前和所需状态进行操做。您仍然须要进行事件回顾,以增长影响因素。

在制定事件响应计划时,操做员的行为多是宝贵的资源。若是您知道操做员将自动尝试纠正此行为,则能够将其归入您的指望和过程当中。例如,若是您有针对饱和服务器的事件响应计划,那么您的操做员能够启动新服务器实例或从新配置负载平衡。您的响应计划将考虑到这一点,从而节省了一些故障排除步骤,并使您能够专一于始发问题。经过组合操做员和自动运行手册,能够最大程度地减小手动上报的数量,并解决许多事件,而无需人工干预。因为自动化是SRE的另外一个核心目标,所以这是Kubernetes Operator适合您的可靠性策略的另外一种方式。

随着您将服务转换为基于容器的模型而且Kubernetes对您的DevOps实践变得更加剧要,将运营商归入您的可靠性策略中很是重要。操做员容许您使用自定义资源和响应扩展Kubernetes,从而实现更高的自动化程度和更少的工做量。

相关文章
相关标签/搜索