作为一名经验丰富的专业人士,我作为 Apache Druid k8s operator 的维护者获得了丰富的经验,并且与人合着并致力于各种 k8s operators/库。通过我的经验,我认识到需要建立特定于应用程序的控制平面,以促进大数据在 Kubernetes 上的顺利运行。
在我过去的角色中,我为 RillData 的 Druid、Startree 的 Pinot 和 Chistadata 的 Clickhouse 构建了 Kubernetes 控制平面。在所有三个 OLAP 商店工作之后,我现在完全致力于我的最新企业 DatAInfra,该公司专注于构建高效的控制平面,使数据能够在 Kubernetes 上无缝运行。
我们相信 Kubernetes 可以作为任何应用程序的控制平面,包括那些具有数据和状态集的应用程序。虽然 Helm 图表对配置管理很有用,但它们不维护应用程序的状态。这就是我们基于 Kubernetes 操作符模式构建控制平面的原因,它充当您的应用程序需求和 Kubernetes 基础设施之间的桥梁。
k8s 的 Pinot 控制平面专门设计用于改善运行 Apache Pinot 集群的用户体验。作为一个分布式数据库,如果没有合适的工具,Pinot 很难在 Kubernetes 上运行。我们的项目基于DSOI 规范,并使用Operator-Runtime库构建,以提供更加用户友好和 Kubernetes 友好的体验。
本项目基于 Kubernetes 算子模式,但不限于此模式。鉴于 Pinot 的复杂性,仅依靠 Kubernetes 运营商可能不足以有效管理其运营。我们对该项目的愿景是创建一套全面的工具和实用程序,以实现 Pinot 在 Kubernetes 上的无缝部署和操作。
Pinot 控制平面支持基于Helm Chart 的部署。要安装图表,请运行以下命令。我们将使用 Makefile 命令来引导控制平面。
git clone https://Github.com/datainfrahq/pinot-control-plane-k8s.git
make helm-install-pinot-control-plane
make helm-install-zk-operator
导出 Kubernetes 存储类。
export STORAGE_CLASS_NAME=standard
envsubst < examples/00-pinot-basic/pinot-basic.yaml | kubectl Apply -f - -n pinot
# Add Kafka
helm repo add kafka https://charts.bitnami.com/bitnami
# Deploy kafka
helm install -n pinot kafka kafka/kafka --set replicas=1,zookeeper.image.tag=latest
# Add Kafka
helm repo add kafka https://charts.bitnami.com/bitnami
# Deploy kafka
helm install -n pinot kafka kafka/kafka --set replicas=1,zookeeper.image.tag=latest
kubectl apply -f examples/00-pinot-basic/pinotschema-basic.yaml -n pinot
kubectl apply -f examples/00-pinot-basic/pinottable-basic.yaml -n pinot
kubectl apply -f examples/00-pinot-basic/pinot-realtime-kafka.yaml
kubectl port-forward pinot-controller-controller-0 -n pinot 9000