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-starrocks
Chartkube-starrocks-${chart_version}.tgz
。kube-starrocks
Chart 分为两个子图:starrocks
Chartstarrocks-${chart_version}.tgz
和operator
Chartoperator-${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] 多个值 YAML 文件中的
feEnvVars
、beEnvVars
和cnEnvVars
字段的值可以合并。 #396 - [Operator] 在 StarRocksCluster CRD 中添加
spec.containers.securityContext.capabilities
以自定义容器的 Linux 功能。 #404
Bug 修复
修复了以下问题
- [Operator] 可以更新
service
中的annotations
字段。 #402 #399 - [Operator] statefulset 和 deployment 的修改采用补丁而不是更新。它解决了启用 CN 和 HPA 时升级 CN 会导致所有 CN pod 终止并重新启动的问题。 #397
- [Operator] service 对象的修改采用补丁而不是更新。它可以防止 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 <name_of_the_starrocks_cluster_object> -oyaml
,并在返回结果中的status.reason
字段中查看错误日志。 #359 - 一个空目录可以挂载在
storageVolumes
字段中。 #324
Bug 修复
修复了以下问题
- StarRocks 集群的状态与集群的 FE、BE 和 CN 组件的状态不一致。 #380
- 当
autoScalingPolicy
被删除时,HPA 资源不会被删除。 #379 - 当
starRocksCnSpec
被删除时,HPA 资源不会被删除。 #357
1.8
1.8.8
错误修复
- [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 的显式协议选择:当 Istio 安装在 Kubernetes 环境中时,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 的旧 configmaps 将被删除。将创建 FE、BE 和 CN 的具有新名称的新 configmaps。这可能会导致 FE、BE 和 CN pod 的重新启动。
1.8.4
功能
- [Helm Chart] 可以使用 Prometheus 和 ServiceMonitor CR 监控 StarRocks 集群的指标。有关用户指南,请参阅 与 Prometheus 和 Grafana 集成。 #284
- [Helm Chart] 在 values.yaml 中的
starrocksCnSpec
中添加storagespec
和更多字段,以配置 StarRocks 集群中 CN 节点的日志卷。 #280 - 在 StarRocksCluster CRD 中添加
terminationGracePeriodSeconds
,以配置在删除或更新 StarRocksCluster 资源时,强制终止 pod 之前等待的时间。 #283 - 在 StarRocksCluster CRD 中添加
startupProbeFailureSeconds
字段,以配置 StarRocksCluster 资源中 pod 的启动探测失败阈值。 #271
Bug 修复
修复了以下问题
- 当 StarRocks 集群中存在多个 FE pod 时,FE Proxy 无法正确处理 STREAM LOAD 请求。 #269
文档
- 添加关于如何部署本地 StarRocks 集群的快速入门.
- 添加更多关于如何使用不同配置部署 StarRocks 集群的用户指南。例如,如何 部署具有所有支持功能的 StarRocks 集群。有关更多用户指南,请参阅 docs。
- 添加更多关于如何管理 StarRocks 集群的用户指南。例如,如何配置 日志记录和相关字段 以及 挂载外部 configmaps 或 secrets。有关更多用户指南,请参阅 docs。
1.8.3
升级说明
- [Helm Chart] 将
JAVA_OPTS_FOR_JDK_11
添加到默认的 fe.conf 文件。当使用默认的 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
参数的值从 60 秒更改为 600 秒,以避免超时。
1.8.2
改进
- 增加 operator pod 允许的最大内存使用量,以避免 OOM。 #254
1.8.1
功能
- 支持使用 configMaps 和 secrets 中的 subpath 字段,允许用户从这些资源挂载特定文件或目录。 #249
- 在 StarRocks 集群 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 文件的格式调整为新格式。可以从 Assets 部分下载适用于不同操作系统的 values 迁移工具。您可以通过运行
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 中添加了两个子图,operator 和 starrocks。您可以选择通过指定相应的子图分别安装 StarRocks operator 或 StarRocks 集群。这样,您可以更灵活地管理 StarRocks 集群,例如部署一个 StarRocks operator 和多个 StarRocks 集群。
-
功能
- [Helm Chart] Kubernetes 集群中的多个 StarRocks 集群。支持通过安装
starrocks
Helm 子图在 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
改进