Kubernetes Operator for StarRocks 的版本
通知
StarRocks 提供的 Operator 用于在 Kubernetes 环境中部署 StarRocks 集群。StarRocks 集群组件包括 FE、BE 和 CN。
用户指南:您可以使用以下方法在 Kubernetes 上部署 StarRocks 集群
源代码
starrocks-kubernetes-operator 和 kube-starrocks Helm Chart
资源下载 URL
-
URL 前缀
https://github.com/StarRocks/starrocks-kubernetes-operator/releases/download/v${operator_version}/${resource_name} -
资源名称
- StarRocksCluster CRD:
starrocks.com_starrocksclusters.yaml - StarRocks Operator 默认配置文件:
operator.yaml - Helm Chart,包括
kube-starrocksChartkube-starrocks-${chart_version}.tgz。kube-starrocksChart 分为两个子 Chart:starrocksChartstarrocks-${chart_version}.tgz和operatorChartoperator-${chart_version}.tgz。
- StarRocksCluster CRD:
例如,kube-starrocks chart v1.8.6 的下载 URL 为
https://github.com/StarRocks/starrocks-kubernetes-operator/releases/download/v1.8.6/kube-starrocks-1.8.6.tgz
版本要求
- Kubernetes:1.18 或更高版本
- Go:1.19 或更高版本
发布说明
1.9
1.9.1
改进
- [Helm Chart] 当
logStorageSize设置为0时,Operator 不会为日志存储创建 PersistentVolumeClaim (PVC)。 #398 - [Operator] Operator 可以检测
storageVolumes中的mountPath和name值是否重复。如果存在重复值,则返回错误。 #388 - [Operator] FE 节点的数量不能缩减到 1。 #394
- [Operator] 多个 values YAML 文件中的
feEnvVars、beEnvVars和cnEnvVars字段的值可以合并。 #396 - [Operator] 在 StarRocksCluster CRD 中添加
spec.containers.securityContext.capabilities,用于自定义容器的 Linux capabilities。 #404
Bug 修复
修复了以下问题
- [Operator]
service中的annotations字段可以更新。 #402 #399 - [Operator] StatefulSet 和 Deployment 的修改被补丁(patched)而不是更新。这解决了在启用 CN 和 HPA 的情况下,升级 CN 会导致所有 CN Pod 终止并重新启动的问题。 #397
- [Operator] Service 对象的修改被补丁(patched)而不是更新。这可以防止 Operator 覆盖修改,例如,当使用 Kubernetes Cloud Provider 并且 Service 对象被该 Kubernetes Cloud Provider 修改时。 #387
1.9.0
新功能
- 添加 StarRocksWarehouse CRD 以支持 StarRocks Warehouse。请注意,StarRocks Warehouse 目前是 StarRocks 企业版的功能。 #323
增强功能
- 在 StarRocksCluster CRD 中添加
status.reason字段。当子控制器在集群部署过程中的应用操作失败时,您可以执行kubectl get starrockscluster <starrocks_cluster_object_name> -oyaml,并在返回结果的status.reason字段中查看错误日志。 #359 - 可以在
storageVolumes字段中挂载一个空目录。 #324
Bug 修复
修复了以下问题
- StarRocks 集群的状态与其 FE、BE 和 CN 组件的状态不一致。 #380
- 删除
autoScalingPolicy时,HPA 资源不会被删除。 #379 - 删除
starRocksCnSpec时,HPA 资源不会被移除。 #357
1.8
1.8.8
Bug 修复
- [Operator] 当使用
StarRocksFeSpec.service、StarRocksBeSpec.service和StarRocksCnSpec.service添加注解时,Operator 不再对搜索服务(内部服务)添加注解。 #370
1.8.7
增强功能
- 在 StarRocksCluster CRD 中添加
livenessProbeFailureSeconds和readinessProbeFailureSeconds字段。当 StarRocks 处于重负载下,并且存活探针和就绪探针仍然使用默认值时,它们可能会失败并导致容器重新启动。在这种情况下,您可以为这两个字段添加更大的值。 #309
1.8.6
Bug 修复
修复了以下问题
- 在 Stream Load 作业期间返回错误
sendfile() failed (32: Broken pipe) while sending request to upstream。在 Nginx 将请求体发送到 FE 后,FE 会将请求重定向到 BE。此时,Nginx 中缓存的数据可能已经丢失。 #303
文档
1.8.5
改进
- [Helm Chart] Operator 的服务账户可以自定义
annotations和labels:Operator 默认创建一个名为starrocks的服务账户,用户可以通过在 values.yaml 的serviceAccount中指定annotations和labels字段来为 Operator 的starrocks服务账户自定义注解和标签。operator.global.rbac.serviceAccountName字段已被弃用。 #291 - [Operator] FE 服务支持 Istio 的显式协议选择:当 Kubernetes 环境中安装了 Istio 时,Istio 需要确定 StarRocks 集群流量的协议,以便提供路由和丰富的指标等附加功能。因此,FE 服务在
appProtocol字段中显式地将其协议定义为 MySQL。这个改进尤为重要,因为 MySQL 协议是一种服务器优先的协议,与自动协议检测不兼容,有时可能会导致连接失败。 #288
Bug 修复
修复了以下问题
- [Helm Chart] 当
starrocks.initPassword.enabled为 true 并且指定了starrocks.starrocksCluster.name的值时,StarRocks 中 root 用户的密码可能未成功初始化。这是因为 initpwd pod 使用错误的 FE 服务域名来连接 FE 服务。更具体地说,在这种情况下,FE 服务域名使用了starrocks.starrocksCluster.name指定的值,而 initpwd pod 仍然使用starrocks.nameOverride字段的值来构成 FE 服务域名。(#292)
升级说明
- [Helm Chart] 当
starrocks.starrocksCluster.name指定的值与starrocks.nameOverride的值不同时,旧的 FE、BE 和 CN 配置映射将被删除。将创建具有新名称的 FE、BE 和 CN 的新配置映射。这可能会导致 FE、BE 和 CN pod 的重新启动。
1.8.4
功能
- [Helm Chart] 可以使用 Prometheus 和 ServiceMonitor CR 来监控 StarRocks 集群的指标。有关用户指南,请参阅 与 Prometheus 和 Grafana 集成。 #284
- [Helm Chart] 在 values.yaml 的
starrocksCnSpec中添加storagespec和更多字段,以配置 StarRocks Cluster 中 CN 节点的日志卷。 #280 - 在 StarRocksCluster CRD 中添加
terminationGracePeriodSeconds,用于配置在删除或更新 StarRocksCluster 资源时,强制终止 pod 之前等待的时间。 #283 - 在 StarRocksCluster CRD 中添加
startupProbeFailureSeconds字段,用于配置 StarRocksCluster 资源中 pod 的启动探测失败阈值。 #271
Bug 修复
修复了以下问题
- 当 StarRocks 集群中存在多个 FE pod 时,FE 代理无法正确处理 STREAM LOAD 请求。 #269
文档
- 添加快速入门指南,介绍如何部署本地 StarRocks 集群.
- 添加更多用户指南,介绍如何使用不同配置部署 StarRocks 集群。例如,如何 部署一个支持所有功能的 StarRocks 集群。有关更多用户指南,请参阅 文档。
- 添加更多用户指南,介绍如何管理 StarRocks 集群。例如,如何配置 日志和相关字段 以及 挂载外部配置映射或密钥。有关更多用户指南,请参阅 文档。
1.8.3
升级说明
- [Helm Chart] 在默认的 fe.conf 文件中添加
JAVA_OPTS_FOR_JDK_11。当使用默认的 fe.conf 文件并且 helm chart 升级到 v1.8.3 时,FE pod 可能会重新启动。 #257
功能
- [Helm Chart] 添加
watchNamespace字段,用于指定 Operator 需要监视的唯一命名空间。否则,Operator 将监视 Kubernetes 集群中的所有命名空间。在大多数情况下,您不需要使用此功能。当 Kubernetes 集群管理太多节点,Operator 监视所有命名空间并消耗过多内存资源时,可以使用此功能。 #261 - [Helm Chart] 在 values.yaml 文件中的
starrocksFeProxySpec中添加Ports字段,允许用户指定 FE Proxy 服务的 NodePort。 #258
改进
- 为了避免超时,将 nginx.conf 文件中的
proxy_read_timeout参数值从 60s 更改为 600s。
1.8.2
改进
- 增加 Operator pod 的最大内存使用量限制,以避免 OOM。 #254
1.8.1
功能
- 支持使用 configMaps 和 secrets 中的 subpath 字段,允许用户挂载来自这些资源的特定文件或目录。 #249
- 在 StarRocksCluster CRD 中添加
ports字段,允许用户自定义服务的端口。 #244
改进
- 删除 StarRocks 集群的
BeSpec或CnSpec时,会删除相关的 Kubernetes 资源,确保集群状态的干净和一致。 #245
1.8.0
升级说明和行为变更
-
[Operator] 要升级 StarRocksCluster CRD 和 Operator,您需要手动应用新的 StarRocksCluster CRD starrocks.com_starrocksclusters.yaml 和 operator.yaml。
-
[Helm Chart]
-
要升级 Helm Chart,您需要执行以下操作
-
使用 **values 迁移工具** 将上一个 values.yaml 文件的格式调整为新格式。不同操作系统的 values 迁移工具可以从 Assets 部分下载。您可以通过运行
migrate-chart-value --help命令来获取该工具的帮助信息。 #206migrate-chart-value --input values.yaml --target-version v1.8.0 --output ./values-v1.8.0.yaml -
更新 Helm Chart 仓库。
helm repo update -
执行
helm upgrade命令,将调整后的 values.yaml 文件应用到 StarRocks helm chart kube-starrocks。helm upgrade <release-name> starrocks/kube-starrocks -f values-v1.8.0.yaml
-
-
kube-starrocks helm chart 中添加了两个子 Chart:operator 和 starrocks。您可以分别通过指定相应的子 Chart 来选择安装 StarRocks Operator 或 StarRocks 集群。这样,您可以更灵活地管理 StarRocks 集群,例如部署一个 StarRocks Operator 和多个 StarRocks 集群。
-
功能
- [Helm Chart] Kubernetes 集群中的多个 StarRocks 集群。通过安装
starrocksHelm 子 Chart,支持在 Kubernetes 集群的不同命名空间中部署多个 StarRocks 集群。 #199 - [Helm Chart] 支持在执行
helm install命令时 配置 StarRocks 集群 root 用户的初始密码。注意,helm upgrade命令不支持此功能。 - [Helm Chart] 与 Datadog 集成:与 Datadog 集成以收集 StarRocks 集群的指标和日志。要启用此功能,您需要在 values.yaml 文件中配置与 Datadog 相关的字段。有关详细的用户指南,请参阅 与 Datadog 集成。 #197 #208
- [Operator] 以非 root 用户身份运行 Pod。添加 runAsNonRoot 字段以允许 Pod 以非 root 用户身份运行,这可以提高安全性。 #195
- [Operator] FE 代理。添加 FE 代理以允许外部客户端和支持 Stream Load 协议的数据加载工具访问 Kubernetes 中的 StarRocks 集群。这样,您就可以使用基于 Stream Load 的加载作业将数据加载到 Kubernetes 中的 StarRocks 集群。 #211
改进