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

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

Kubernetes是一个开源项目,可“包含”工作负载和服务,并管理部署和配置。GoK 5 ? p + r l W @ogG . $ hle于2l M 7 X ,015年发布了Kubernetes,现在由Cloud Native Computing Foundation维护。自发布以来,它已成为一种全球现象。大多数云原生公司都在使用它,SaaS供应商提供商业的预构建版本,甚至J } 5 i K I 7 e还有年度大会!

是什么使K] ? , h U : f . Oubernetes成为如此基本的服务?一个主要因素是其自动化功能。Kubernetes可以根据其跟踪的指标或工程师的要求自动更改已部署X . , 4 , z A / k容器的配( ~ {置,甚至可以部署新容器。让Kubernetes处理这些过程可以节省时间,消除劳累并提高一致# r b性。

如果这些好处听起来很G k y = b R熟悉,那可能是因8 v ] + + Z }为它们与SRE的理念重叠。但是,Y 3 8 v V @ i O如何将Kubernetes的自动化纳入您的SRE实践中?在这篇博Q Q H t . n $ D客中,我们将解释Kubernetes Operator(Kubernet@ L b 2 Fes功能是自定义自动化的核心),并讨论它如何发展您的SRE解决方案。

Kubernetes Operator可以做什么?} + # N ~ 5 y 9

Jason Dobies和Joshua Wood 在Kubernetes的《运营商:自动化容器编排平台》一书中将运营t w 0 ) X 0 n商描述为“针对其应用的自动化站点可靠性工程师”。考虑到SR+ * _ f W a u hE的丰富经验和多样化的工作量,这4 : o L是一个大胆的声明。那么操作员到底能做什么?

Kubernetes操作员完成复杂的任务
操作员可以完成复杂的任 # P 6 X { S f n务,以在应用程序的输出中实现所需的更改。它可以自动处理以下任务:

部署应用
将应用程序更z 8 O p = * ? H新到新版本
重新配置应用程序设$ l ^ . B I Z
根据使用情况上下扩展应用程序
故障处理s $ % 8 D
建立监控基础架构
没有Kubernetes操作员,工程师将需要完成这些任务。使它们自动化可以节省时间和精力,并使过程和结果一致。

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

Kubernetes允许您基于特定的应用程序创建和定义自定义资源。定制资源是您的应用程序生成的数据对象,其中包含有关应用程序状态的指标。假设您有一个根据使用情况生成新服务器实例的应用程序。您可以定义自定义资源来检查每个新实例的RAM和磁盘空间。您还可v 5 j ]以将自定义资源定义为应用程序尝试匹配的目标。然后,Kubernetes Operator可以控制应用程序以实现目标自定义资源。如果应用程序正在拆分RAM或磁盘空间不足的服务器,N N ; ) N ? V j U则操作员可以重新配置设置以匹配所需的数量。

Kubernt & N B y 0 ^ Wetes Operator做出有状态的决策

Kubernetes Operator可以根据应用程序的输出来修改应用程序的配置和用法。这由为该应用程序定义的自定义资源确定。显示所需状态的自定义资源和显示当前状态的自定义资源形成一个循I v M F x }环。操作员观察当前状态,然后采取措施使应用程序产生所需状态。执行动作后,将重新评估当前状态,并再次开始循环。

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

Kubernetes Opera^ ^ g q v } Utor和SRE

如果您使用的是Kubernetes,您会发现构建和实现Operators与您的SRE目标j S F S N保持一致。

操作员监控,SLI和SLO
在为应用程序开发自定义资源时,您需要选择资源将监视应用程序输出中的哪些信号,以及操作员将应用程序导k 6 ? N ~ r Z向的目标。这类似于创建SLI和SLO。

对于Operator和SLI,确定影响最大的指标的过程相似。在Kubernetes Operator教科书中,Dobies和Wood建) . E W G 8 i议首先查看“四个黄金信号”(来自Google SRE书中的一个概x a i J x E Z P ]念),以确定OperatorV / =应监控的内容。这些是:

潜伏
交通
失误
饱和
为您的应用程序创建操作员将帮助您了解应为它T u : m z v : L 3们设置哪些SLI和SLO。同样,设置SLI和SLO可以帮助您了解操作员应监视的内容。

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

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

自动化SRE应用程序部署

您的SRE实践将涉及为服H q _ m n h H 3 !务的每个新实例定期部署应用程序。例如,您可能希望在每次实现系统体系结构的新区域时都部署监视应用程序。Kubernetes Operator可以加快这一过O h B O l )程并使之自动化。为了进行监视,q p ^ NPrometheus操作员是Kubernetes开发的首批操作员之一。它会r s C自动将开源监控软件Prometheus的新实例部署并控制到任何目标集群上。

SRE工具代表着( g 9 $对可靠性的投资。实施它们所花费的时间由它们节省的时间支付。创建Operatw B ^ D S 0or是一项类似的投资。通过创建操作员,H U Q可以节省每个部9 { h s z . r O署的时间。此外,部署是一致且可靠的b z # ?。您的SRE实践具有较少的开销,并且可以随您的组织扩展。

操作员与事件管理

可以设置操y n * { A e N作员进行调整z j C以处理故障。如果应用程序的自定义资源与期望的结果有所不同,则操作员将进行更改以进行补偿,直到达到期望的状态。变化的原因与操作员无关。它仅基于当前和所需状态进行操作。您仍然需要进行事[ d 7 % H j件回顾,以增加影响因素。

在制定事件响应计划时,操作员的行为可能是宝贵的资源 { ^ N { h Y。如果您知道操作员将自动尝试纠正此行为,则可8 G . n ; P $ q d以将其纳入您的期望和过程中。例如,如果您有针对饱和服务器的事件响- O b ` , s应计划,那么您的操作员可以启动新; W | d W * ? b 4服务J n V C M g y器实例或重新配置负载平衡。您的响应计划将考虑到这一点,从而节省了一些故障排除步骤,并使您可以专注[ f ) R o于始发问题。i } d s v通过组合操作员和自动运行手册V R * ) j | J @,可以最大程度地减少手动上报的数量,并解决许多事件,而无需人工干预。由于自动化是SRE的另一个核心目标,因此这是Kubernetes Operator适合您的可靠性策略的另一种方式。

随着您将服务转换为基于容器` 7 B 2 ,的模型并且Kubernetes对您的DevOps实践变得更加重要,将运营商纳入您的可靠性策略中非常X s | ~ | c W重要。操作员允许您使用自定义资源和响应扩展Kubernetes,从而实现更高的自动化程度和更少的工作量。