Kubernetes 上数据服务的自动化越来越受欢迎。在 K8s 上运行有状态工作负载意味着使用 运算符。但工程师常常对编写 Kubernetes 操作符的复杂性感到惊讶,这会影响最终用户。《2021 年 Kubernetes 数据报告》发现,Kubernetes 运营商的质量阻碍了公司进一步扩大其在 Kubernetes 足迹上的数据。
Anynines 首席执行官 Julian Fischer 拥有近十年的自动化工具开发经验,他非常了解如何处理在云原生平台和 Kubernetes 等分布式基础设施上进行有状态操作的复杂性。
Julian首先分享了一个构建算子时应该遵循的方法论,他称之为Operational Model,分为四个部分:
级别 1:管理员或数据库会做什么
级别 2:容器化、YAML + kubectl
级别 3:编写运算符
第 4 级:运营商生命周期管理
在讲座结束时 ,您将了解 所有技巧以及如何避免数据服务自动化中的常见陷阱,让您 从技术和方法论的角度编写更好的 Kubernetes 操作符。
朱利安·费舍尔 01:21
好的,谢谢。今天,我们正在谈论建筑运营商的原则。事实上,你知道,我已经被介绍为不想让你厌烦那些东西,除了可能注意到我们已经建立,你知道,在过去十年左右的时间里,我们已经为许多数据服务建立了自动化。所以我们今天要讨论的话题,以及我想与大家分享的关于通用数据服务自动化的很多事情,然后我们将在 Kubernetes 上下文中到处看看 Kubernetes。因此,它在数据服务自动化和 Kubernetes 的一般主题之间有点反弹,特别是。是的,通常至少是一个小时的谈话,但我今天想快点结束。所以一般来说,如果你谈论数据服务自动化,你首先要做的事情之一就是范围,数据服务自动化实际上是什么意思?对我们来说,任何九点都有一个使命宣言,它是关于将广泛的数据服务的整个生命周期完全自动化,以便在跨基础设施的云原生平台上大规模运行。这不是这里的一些营销声明,但它是数据服务自动化需要如何界定范围的一个例子。因此,例如,为了自动化多个数据服务,您还会看到某些共享效果,例如,您可以在运营商 SDK 之外的数据服务自动化框架中放置一些东西。因此,您的任务背景会产生很多影响。因此,例如,如果您考虑一个简单的 Kubernetes 集群,假设一个主要运行其应用程序的小型组织,比方说,使用 Postgres 数据库,which Postgres 一直是我最喜欢的例子。你知道,一个 Kubernetes 集群一个操作员一个服务实例,应用程序将连接到那个数据库。你去吧,这与我们今天想在这里谈论的故事不同。他们可以想象,通过按需提供专用服务实例,其中服务实例假设 Postgres 数据库表示为有状态集。并且运营商允许您创建其中的许多。在那里,有更多的复杂性,因为你有更多的数据服务实例,你必须照顾好它。如果您随后引入更多数据服务,例如,您将 RabbitMQ、MongoDB 或任何其他数据库添加到您的操作员集合中,挑战就会变得更大。应用程序将连接到那个数据库。你去吧,这与我们今天想在这里谈论的故事不同。他们可以想象,通过按需提供专用服务实例,其中服务实例假设 Postgres 数据库表示为有状态集。并且运营商允许您创建其中的许多。在那里,有更多的复杂性,因为你有更多的数据服务实例,你必须照顾好它。如果您随后引入更多数据服务,例如,您将 RabbitMQ、MongoDB 或任何其他数据库添加到您的操作员集合中,挑战就会变得更大。应用程序将连接到那个数据库。你去吧,这与我们今天想在这里谈论的故事不同。他们可以想象,通过按需提供专用服务实例,其中服务实例假设 Postgres 数据库表示为有状态集。并且运营商允许您创建其中的许多。在那里,有更多的复杂性,因为你有更多的数据服务实例,你必须照顾好它。如果您随后引入更多数据服务,例如,您将 RabbitMQ、MongoDB 或任何其他数据库添加到您的操作员集合中,挑战就会变得更大。他们可以想象,通过按需提供专用服务实例,其中服务实例假设 Postgres 数据库表示为有状态集。并且运营商允许您创建其中的许多。在那里,有更多的复杂性,因为你有更多的数据服务实例,你必须照顾好它。如果您随后引入更多数据服务,例如,您将 RabbitMQ、MongoDB 或任何其他数据库添加到您的操作员集合中,挑战就会变得更大。他们可以想象,通过按需提供专用服务实例,其中服务实例假设 Postgres 数据库表示为有状态集。并且运营商允许您创建其中的许多。在那里,有更多的复杂性,因为你有更多的数据服务实例,你必须照顾好它。如果您随后引入更多数据服务,例如,您将 RabbitMQ、MongoDB 或任何其他数据库添加到您的操作员集合中,挑战就会变得更大。
现在在我们通常合作的组织中。这些组织有时有成百上千的员工和几千甚至几万的开发人员,令人难以置信的是,他们拥有的工程师数量如此之多,然后就会有很多 Kubernetes 集群。我们认为数十个和数百个 Kubernetes 集群将被视为我们已经体验过的环境。例如,在基于虚拟机的数据服务自动化中,他们通常有 1000 多个虚拟机运行 1000 个服务实例,这取决于它们是否集群,您可以假设一个服务实例与三个 pod 的比率,例如,如果一个小型集群实例正在运行。现在有了这样的规模,对自动化的要求发生了很大变化,规模很重要。因此,如果你解决一个简单的任务,比如制作香肠并分发它们,你可以想象,仅仅从你想要服务的人数的规模来看,堆栈技术解决方案也必须进行调整。数据服务自动化也几乎相同。因此,如果我们考虑那些有很多服务实例的大型环境,你永远不应该忘记每个数据服务实例对某人都很重要,这个服务实例非常重要。因此,自动化需要达到一定的标准。如果该标准不符合,你知道,自动化将被拒绝,组织和技术采用将不会发生。堆栈技术解决方案也必须进行调整。数据服务自动化也几乎相同。因此,如果我们考虑那些有很多服务实例的大型环境,你永远不应该忘记每个数据服务实例对某人都很重要,这个服务实例非常重要。因此,自动化需要达到一定的标准。如果该标准不符合,你知道,自动化将被拒绝,组织和技术采用将不会发生。堆栈技术解决方案也必须进行调整。数据服务自动化也几乎相同。因此,如果我们考虑那些有很多服务实例的大型环境,你永远不应该忘记每个数据服务实例对某人都很重要,这个服务实例非常重要。因此,自动化需要达到一定的标准。如果该标准不符合,你知道,自动化将被拒绝,组织和技术采用将不会发生。这个服务实例很重要。因此,自动化需要达到一定的标准。如果该标准不符合,你知道,自动化将被拒绝,组织和技术采用将不会发生。这个服务实例很重要。因此,自动化需要达到一定的标准。如果该标准不符合,你知道,自动化将被拒绝,组织和技术采用将不会发生。