跳到主要内容

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 Chart kube-starrocks-${chart_version}.tgzkube-starrocks Chart 分为两个子图:starrocks Chart starrocks-${chart_version}.tgzoperator Chart operator-${chart_version}.tgz

例如,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 可以检测 storageVolumesmountPathname 的值是否重复。当存在重复值时,会返回错误。 #388
  • [Operator] FE 节点的数量不能缩小到 1。 #394
  • [Operator] 多个值 YAML 文件中的 feEnvVarsbeEnvVarscnEnvVars 字段的值可以合并。 #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.serviceStarRocksBeSpec.serviceStarRocksCnSpec.service 添加注释时,operator 不再在搜索服务(这是一个内部服务)上进行注释。 #370

1.8.7

增强

  • 在 StarRocksCluster CRD 中添加 livenessProbeFailureSecondsreadinessProbeFailureSeconds 字段。当 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 的服务帐户自定义 annotationslabels:Operator 默认创建一个名为 starrocks 的服务帐户,用户可以通过在 values.yamlserviceAccount 中指定 annotationslabels 字段来自定义 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

文档

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

功能

改进

  • 当删除 StarRocks 集群的 BeSpecCnSpec 时,删除相关的 Kubernetes 资源,确保集群的干净和一致状态。 #245

1.8.0

升级说明和行为变更

  • [Operator] 要升级 StarRocksCluster CRD 和 operator,您需要手动应用新的 StarRocksCluster CRD starrocks.com_starrocksclusters.yamloperator.yaml。

  • [Helm Chart]

    • 要升级 Helm Chart,您需要执行以下操作

      1. 使用 values 迁移工具 将以前的 values.yaml 文件的格式调整为新格式。可以从 Assets 部分下载适用于不同操作系统的 values 迁移工具。您可以通过运行 migrate-chart-value --help 命令获取此工具的帮助信息。 #206

        migrate-chart-value --input values.yaml --target-version v1.8.0 --output ./values-v1.8.0.yaml
      2. 更新 Helm Chart 仓库。

        helm repo update
      3. 执行 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 中添加了两个子图,operatorstarrocks。您可以选择通过指定相应的子图分别安装 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

改进

  • 在 StarRocksCluster CRD 中添加 subpath 字段。 #212
  • 增加 FE 元数据允许的磁盘大小。当可以配置用于存储 FE 元数据的可用磁盘空间小于默认值时,FE 容器停止运行。 #210