利用 Vitess 操作符在 Kubernetes 中管理 MySQL
1. 操作符概述
操作符是自定义资源和自定义控制器的组合,用于维护这些资源的状态,并在 Kubernetes 中管理应用程序(或操作数)。推荐的模式是为每个自定义资源提供一个自定义控制器,但具体细节可能有所不同。简单的操作符可能由单个资源和控制器组成,而更复杂的操作符可能有多个资源和控制器,这些控制器可能在同一进程空间中运行,也可能分布在不同的 Pod 中。
在 Kubernetes 中,操作符和控制器在技术上是不同的概念,但这两个术语经常互换使用。通常,已部署的控制器或控制器集合被称为“操作符”。
为了理解操作符和 Kubernetes 控制平面的不同元素如何协同工作,我们以 DbCluster 操作符为例。管理员在集群中安装 DbCluster 操作符和 db-cluster
自定义资源后,用户可以使用 kubectl
创建 db-cluster
资源实例。该资源会在 API 服务器中注册,其状态会存储在 etcd 中以确保高可用性。DbCluster 控制器会收到新资源的通知,并使用 API 服务器创建额外的 Kubernetes 资源,如 StatefulSets、Services 等。后续,StatefulSet 控制器会创建新的 Pod 资源,API 服务器会请求调度器将每个 Pod 分配到工作节点,并与所选节点上的 Kubelet 通信以启动所需的 Pod。
创建 db-cluster
资源会引发一系列交互,不同的控制器会根据 Kubernetes 资源的变