使用 Operator 部署 StarRocks 集群
本文介绍如何在 Kubernetes 集群上通过 StarRocks Operator 自动化部署和管理 StarRocks 集群。
工作原理

环境准备
创建 Kubernetes 集群
您可以使用云托管的 Kubernetes 服务,例如 Amazon Elastic Kubernetes Service (EKS) 或者 Google Kubernetes Engine (GKE) 集群,或者私有 Kubernetes 集群。
创建 Amazon EKS 集群
- 创建 EKS 集群前,请确保环境中已安装如下命令行工具。
- 安装并配置 AWS 的命令行工具 AWS CLI。
- 安装 EKS 集群命令行工具 eksctl。
- 安装 Kubernetes 集群命令行工具 kubectl。
- 创建 EKS 集群。支持以下两种方式:
创建 GKE 集群
创建前,请确保已经完成所有前置工作。创建步骤,请参考创建 GKE 集群。
创建私有 Kubernetes 集群
创建 Kubernetes 集群。如需快速体验本特性,则可以使用 Minikube 创建单节点 Kubernetes 集群。
部署 StarRocks Operator
-
添加定制资源 StarRocksCluster。
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/starrocks.com_starrocksclusters.yaml -
部署 StarRocks Operator。您可以选择使用默认配置文件或者自定义配置文件部署 StarRocks Operator。
-
使用默认配置文件部署 StarRocks Operator:
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yamlStarRocks Operator 会部署至 Namespace
starrocks,并且管理所有 Namespace 下的 StarRocks 集群。 -
使用自定义配置文件部署 StarRocks Operator:
-
下载用于部署 StarRocks Operator 的配置文件。
curl -O https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml -
根据您的实际需要,修改配置文件
operator.yaml。 -
部署 StarRocks Operator。
kubectl apply -f operator.yaml
-
-
-
检查 StarRocks Operator 的运行状态。如果 Pod 处于
Running状态且 Pod 内所有容器都READY,则表示 StarRocks Operator 成功运行。$ kubectl -n starrocks get pods
NAME READY STATUS RESTARTS AGE
starrocks-controller-65bb8679-jkbtg 1/1 Running 0 5m6s
说明
如果您自定义 StarRocks Operator 所在 Namespace,则需要修改
starrocks为自定义的 Namespace。
部署 StarRocks 集群
您可以直接使用 StarRocks 提供的配置文件范例,部署 StarRocks 集群(定制资源 StarRocks Cluster 实例化的对象)。例如使用 starrocks-fe-and-be.yaml,部署一个 StarRocks 集群,包含三个 FE 和三个 BE 节点。
kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/examples/starrocks/starrocks-fe-and-be.yaml
主要字段说明:
| 字段 | 说明 |
|---|---|
| Kind | 对象所属资源类型。取值必须为 StarRocksCluster。 |
| Metadata | 元 数据。内嵌二级字段和说明如下:
|
| Spec | 对象的期望状态,包含 starRocksFeSpec、starRocksBeSpec、starRocksCnSpec。 |
您也可以根据需要修改配置文件,部署 StarRocks 集群。 支持的字段和详细说明,请参见 api.md 。
部署 StarRocks 集群需要一定时间,期间,您可以执行 kubectl -n starrocks get pods 查看 StarRocks 集群启动状态。如果 Pod 处于 Running 状态且 Pod 内所有容器都 READY,则表示 StarRocks 集群已经成功运行。
说明
如果您自定义 StarRocks 集群所在 Namespace,则需要修改
starrocks为自定义的 Namespace。
$ kubectl -n starrocks get pods
NAME READY STATUS RESTARTS AGE
starrocks-controller-65bb8679-jkbtg 1/1 Running 0 22h
starrockscluster-sample-be-0 1/1 Running 0 23h
starrockscluster-sample-be-1 1/1 Running 0 23h
starrockscluster-sample-be-2 1/1 Running 0 22h
starrockscluster-sample-fe-0 1/1 Running 0 21h
starrockscluster-sample-fe-1 1/1 Running 0 21h
starrockscluster-sample-fe-2 1/1 Running 0 22h
说明
如果部分 Pod 长时间仍无法启动,您可以通过
kubectl logs -n starrocks <pod_name>查看日志信息或者通过kubectl -n starrocks describe pod <pod_name>查看 Event 信息,以定位问题。
访问 StarRocks 集群
访问 StarRocks 集群的各个组件可以通过其关联的 Service 实现,比如 FE Service。Service 的详细说明和访问地址查看,请参考 api.md 和 Service。
说明
- 默认情况下,仅部署 FE Service。如需部署 BE Service 和 CN Service,则您需要在 StarRocks 集群配置文件
starRocksBeSpec、starRocksCnSpec中增加配置。- Service 的名称默认为
<集群名称>-<组件名称>-service,例如starrockscluster-sample-fe-service,您也可以在每个组件的 spec 中进行指定 Service 名称。