网站建设一六八互联,网站建设的原则和目标,开发网站申请,长春火车站哪个区Kubernetes K8s从入门到精通系列之十九#xff1a;Operator模式 一、动机二、Operators in Kubernetes三、Operator示例四、部署Operator五、使用Operator六、编写自己的operator Operator 是 Kubernetes 的软件扩展#xff0c;它利用自定义资源来管理应用程序及其组件。 Ope… Kubernetes K8s从入门到精通系列之十九Operator模式 一、动机二、Operators in Kubernetes三、Operator示例四、部署Operator五、使用Operator六、编写自己的operator Operator 是 Kubernetes 的软件扩展它利用自定义资源来管理应用程序及其组件。 Operator 遵循 Kubernetes 原则特别是控制循环。
一、动机
Operator模式旨在捕捉管理一项服务或一组服务的Operator的主要目标。负责特定应用程序和服务的操作员对系统应该如何运行、如何部署以及出现问题时如何反应有着深入的了解。
在 Kubernetes 上运行工作负载的人们通常喜欢使用自动化来处理可重复的任务。操作员模式捕获了如何编写代码来自动执行超出 Kubernetes 本身提供的任务。
二、Operators in Kubernetes
Kubernetes 专为自动化而设计。开箱即用您可以从 Kubernetes 核心获得大量内置自动化功能。您可以使用 Kubernetes 自动部署和运行工作负载并且可以自动执行 Kubernetes 的工作方式。
Kubernetes 的Operator模式概念使您可以通过将控制器链接到一个或多个自定义资源来扩展集群的行为而无需修改 Kubernetes 本身的代码。 Operator 是 Kubernetes API 的客户端充当自定义资源的控制器。
三、Operator示例
您可以使用operator实现自动化的一些操作包括
按需部署应用程序获取并恢复该应用程序状态的备份处理应用程序代码的升级以及相关更改例如数据库架构或额外的配置设置向不支持 Kubernetes API 的应用程序发布服务以发现它们模拟整个或部分集群的故障以测试其弹性为分布式应用程序选择领导者无需内部成员选举过程
更详细地说operator可能是什么样子这是一个例子
名为 SampleDB 的自定义资源您可以将其配置到集群中。确保 Pod 正在运行的 Deployment其中包含 Operator 的控制器部分。操作员代码的容器镜像。查询控制平面以查明配置了哪些 SampleDB 资源的控制器代码。Operator的核心是代码告诉API服务器如何使现实与配置的资源相匹配。 如果添加新的 SampleDB操作员将设置 PersistentVolumeClaims 来提供持久数据库存储设置 StatefulSet 来运行 SampleDB并设置 Job 来处理初始配置。如果删除它Operator会拍摄快照然后确保 StatefulSet 和 Volumes 也被删除。 Operator还管理定期数据库备份。对于每个 SampleDB 资源Operator确定何时创建可以连接到数据库并进行备份的 Pod。这些 Pod 将依赖于具有数据库连接详细信息和凭据的 ConfigMap和Secret。由于Operator的目标是为其管理的资源提供强大的自动化因此需要额外的支持代码。对于此示例代码检查数据库是否正在运行旧版本如果是则创建为您升级数据库的 Job 对象。
四、部署Operator
部署 Operator 的最常见方法是将自定义资源定义及其关联的控制器添加到集群中。控制器通常会在控制平面之外运行就像运行任何容器化应用程序一样。例如您可以将集群中的控制器作为部署运行。
五、使用Operator
一旦部署了Operator您就可以通过添加、修改或删除Operator使用的资源类型来使用它。按照上面的示例您将为Operator本身设置一个部署然后
kubectl get SampleDB # find configured databaseskubectl edit SampleDB/example-database # manually change some settings……就是这样Operator将负责应用更改并保持现有服务的良好状态。
六、编写自己的operator
如果生态系统中没有operator可以实现您想要的行为您可以编写自己的代码。
您还可以使用任何可以充当 Kubernetes API 客户端的语言/运行时来实现操作员即控制器。
以下是一些可用于编写自己的云原生运算符的库和工具。
Charmed Operator FrameworkJava Operator SDKKopf (Kubernetes Operator Pythonic Framework)kube-rs (Rust)kubebuilderKubeOps (.NET operator SDK)MastMetacontroller along with WebHooks that you implement yourselfOperator Frameworkshell-operator