Martin
by Martin Kysel

介绍Kubernetes了解管理员

Kubernetes.感知admin(kaa)是一个发布的新功能 Nuodb 4.1.Nuodb Helm图表2.4.0。它是什么?

在Kubernetes中,管理Web应用程序,移动后端和微不足道的应用程序是合理的。这些是可以使用kubernetes基本功能进行管理的无状态应用程序的示例,例如 部署 控制器通常不需要复杂的应用程序特定知识。掌舵后不久被引入Kubernetes社区,我们了解到,并非每种用例都可以通过部署yaml模板来解决。尤其是有状态应用程序和数据库是复杂的系统,需要为备份,滚动升级和故障恢复等操作进行自定义逻辑。为解决管理有状态应用的固有复杂性,Kubernetes运营商于2016年推出。

本文中的功能与运营商互补。这 NOODB运营商 在2019年推出的Golang编写,可用于评估Kubernetes中的Noodb,并且可以从谷歌,AWS和Red Hat Operator Marketlaces轻松访问。

一些诺福布背景

作为分布式SQL数据库,Nuodb在Kubernetes空间内独特地定位,因为Nuodb已经有一个管理层。它被称为NuodB管理员,并且由于其名称暗示,它管理数据库。甚至在Kubernetes之前,Nuodb管理员也管理了从数据丢失保护数据库的滚动升级,备份和恢复,重新启动和失败事件的复杂性。 admin已在各种裸机环境中部署,并具有广泛的API来涵盖所有操作需求。站点可靠性工程师(SRE)很少与数据库进程(有时称为引擎)直接交互。相反,他们可以使用 Nuocmd. 命令工具将域修改发布到Nuodb管理员。

管理员在Kubernetes.

在NOODB部署中,使用必须在安装任何数据库图表之前安装的单独的Helm图表部署admin层。它是多租户,并管理群集中的所有Nuodb数据库。此外,它可以在多簇多云环境中跨越多个簇,同时降低了这种部署的复杂性。

Kubernetes.了解管理员

“操作员模式旨在捕获正在管理服务或一组服务的人工操作员的关键目标。关注特定应用程序和服务的人类运营商深入了解系统如何表现,如何部署,以及如何在存在问题时进行反应。“ //kubernetes.io/docs/concepts/extend-kubernetes/operator/

我认为运营商是以各种语言编写的域名脚本(Golang,Java,Python)。这些脚本在应用程序外部,通过观察其状态或通过调用众所周知的API来与应用程序进行交互。 KAA以对用户透明的方式使Nuodb控制平面与Kubernetes控制平面同步,而无需额外的Kubernetes对象。术语 Kubernetes.运营商 通常是指应用程序外部的Kubernetes扩展,并在“应用程序之上”。为避免呼叫新模块,“Java运算符”我们决定选择Kubernetes的术语admin。 KAA可以简化Kubernetes操作,无论用于在群集中部署Nuodb的方法。它可以与运营商,Helm 2和Helm 3合作。

图1 您可以看到这两个设计之间的区别。该图示出了达到所需状态的相关演员及其通信路径。

图像
Kubernetes.意识到博客图1
图1: 操作员设计(左),Kubernetes感知管理设计(右)

和解循环

所有Kubernetes运算符的基本前提是它们执行控制循环以将所需状态与实际状态重新连接。这是对帐循环。在Kubernetes中运行的Nuodb的情况下,有多个状态需要协调:

  1. Kubernetes.所需的状态
  2. 管理员预期的状态
  3. 发动机的实际状态

KAA模块通过检查所需的kubernetes状态并执行特定于域的命令来匹配其他两个状态来调整所有三个状态。

和解循环有两个阶段。首先,kubernetes意识到管理员从所有演员收集状态。一旦建立了该状态的准确图像,管理员将使用Kubernetes状态和必要的执行命令将当前的Nuodb状态与Kubernetes同步,如此 图2.

图像
Kubernetes.意识到博客图2
图2: 和解(上),和解阶段2的第1阶段(底部)

要求

由于KAA提供了类似于Java运算符的功能,因此它需要类似的一组权限。 KAA永远不会改变Kubernetes的状态,只读出Kubernetes状态。所有和解都是一种方式完成。安装时 管理员掌舵图表,Helm将安装一些额外的 角色角色束缚. The name of the roles and bindings is nuodb-kube-inspector, to indicate the read-only nature of these requirements. The Kubernetes resources that are being watched are: StatefulSets, Deployments, PersistentVolumeClaims, and Pods. This list might be subject to change in future NuoDB releases.

概括

Kubernetes.意识到管理员(KAA)是一种类似的操作员模块,可在Kubernetes环境中实现更快的核心集成,从而提高可靠性,易于管理和整体应用程序可用性。它通过在Kubernetes中重新调用所需状态并执行Nuodb域的命令来简化操作以将数据库转换为正确和期望的状态。

在KAA执行的各种操作中留下调整的其他文章,以便为企业分布式SQL应用程序提供无缝的alwort-on Kubernetes运行时环境。