当前位置: 首页 > news >正文

k8s生成StarRocks集群模版

集群由1个fe+3个be组成,满足以下要求:

1、由3个pod组成,每pod分配2c4g

2、第一个pod里有一个be与一个fe,同在一个容器里,fe配置jvm内存设置为1024mb,be的jvm内存设置为1024MB

3、第二第三个pod里分别有一个be,jvm内存设置为2048MB

4、starrocks使用3.4.2镜像,已内置 Java 11

5、需要把数据挂载出来

6、pod需要再不同的node机器上

1. 第一个 Pod(FE + BE 共享 Pod)​

# pod-fe-with-be.yaml
apiVersion: v1
kind: Pod
metadata:name: starrocks-fe-with-belabels:app: starrockscomponent: fe
spec:containers:# FE 容器- name: feimage: starrocks/starrocks:3.4.2imagePullPolicy: IfNotPresentports:- containerPort: 9030  # HTTP 端口- containerPort: 9010  # BEACON 端口env:- name: JAVA_OPTSvalue: "-Xmx1024m -Xms1024m"  # FE JVM 1GBvolumeMounts:- name: fe-storagemountPath: /var/lib/starrocks/feresources:requests:cpu: "1"memory: "2Gi"limits:cpu: "1"memory: "2Gi"# 与 FE 同 Pod 的 BE 容器- name: beimage: starrocks/starrocks:3.4.2imagePullPolicy: IfNotPresentports:- containerPort: 9060  # BE 主端口env:- name: JAVA_OPTSvalue: "-Xmx1024m -Xms1024m"  # BE JVM 1GBvolumeMounts:- name: be-storage-1mountPath: /var/lib/starrocks/beresources:requests:cpu: "1"memory: "2Gi"limits:cpu: "1"memory: "2Gi"affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues: ["starrocks"]topologyKey: kubernetes.io/hostnamevolumes:# FE 数据卷- name: fe-storagepersistentVolumeClaim:claimName: fe-pvc# BE 数据卷- name: be-storage-1persistentVolumeClaim:claimName: be-pvc-1

2. 第二个 Pod(独立 BE)

# pod-be-2.yaml
apiVersion: v1
kind: Pod
metadata:name: starrocks-be-2labels:app: starrockscomponent: be
spec:containers:- name: beimage: starrocks/starrocks:3.4.2imagePullPolicy: IfNotPresentports:- containerPort: 9060env:- name: JAVA_OPTSvalue: "-Xmx2048m -Xms2048m"  # BE JVM 2GBvolumeMounts:- name: be-storage-2mountPath: /var/lib/starrocks/beresources:requests:cpu: "1"memory: "2Gi"limits:cpu: "1"memory: "2Gi"affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues: ["starrocks"]topologyKey: kubernetes.io/hostnamevolumes:- name: be-storage-2persistentVolumeClaim:claimName: be-pvc-2

3. 第三个 Pod(独立 BE)

# pod-be-3.yaml
apiVersion: v1
kind: Pod
metadata:name: starrocks-be-3labels:app: starrockscomponent: be
spec:containers:- name: beimage: starrocks/starrocks:3.4.2imagePullPolicy: IfNotPresentports:- containerPort: 9060env:- name: JAVA_OPTSvalue: "-Xmx2048m -Xms2048m"  # BE JVM 2GBvolumeMounts:- name: be-storage-3mountPath: /var/lib/starrocks/beresources:requests:cpu: "1"memory: "2Gi"limits:cpu: "1"memory: "2Gi"affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues: ["starrocks"]topologyKey: kubernetes.io/hostnamevolumes:- name: be-storage-3persistentVolumeClaim:claimName: be-pvc-3

​4. 数据卷声明(PVC)

# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: fe-pvc
spec:accessModes:- ReadWriteOncestorageClassName: "ssd-storage"  # 替换为实际存储类resources:requests:storage: 100Gi---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: be-pvc-1
spec:accessModes:- ReadWriteOncestorageClassName: "ssd-storage"resources:requests:storage: 500Gi---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: be-pvc-2
spec:accessModes:- ReadWriteOncestorageClassName: "ssd-storage"resources:requests:storage: 500Gi---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: be-pvc-3
spec:accessModes:- ReadWriteOncestorageClassName: "ssd-storage"resources:requests:storage: 500Gi

配置说明​

  1. ​资源分配​

    • ​FE + BE Pod​​:FE 和 BE 容器各占 1C/2G,总和为 2C/4G
    • ​独立 BE Pod​​:BE 容器独占 2C/4G,但 JVM 内存限制为 2GB(需确保容器内存足够)。
  2. ​节点隔离​

    • 使用 podAntiAffinity 强制每个 Pod 调度到不同节点(通过 topologyKey: kubernetes.io/hostname)。
  3. ​存储隔离​

    • FE 和每个 BE 均挂载独立 PVC,路径分别为 /var/lib/starrocks/fe 和 /var/lib/starrocks/be
  4. ​版本验证​

    • 镜像 starrocks:3.4.2 已内置 Java 11,无需额外配置。

部署步骤​

  1. 创建 StorageClass
  2. 应用 PVC 和 Pod 配置:
    kubectl apply -f pvc.yaml
    kubectl apply -f pod-fe-with-be.yaml
    kubectl apply -f pod-be-2.yaml
    kubectl apply -f pod-be-3.yaml

注意事项​

  • ​内存风险​​:BE 容器的 JVM 内存(2GB)接近 Pod 内存限制(4GB),建议实际部署时预留更多内存或优化 JVM 参数。
  • ​存储类​​:替换 ssd-storage 为实际存储类型(如 gp2standard)。
  • ​网络策略​​:确保 Kubernetes 集群节点间网络互通(尤其是 BE 之间的通信)。

http://www.xdnf.cn/news/173071.html

相关文章:

  • 基于WebRTC技术,EasyRTC音视频实时通话助力全网会议的智能化转型
  • 【项目管理】知识点复习
  • 【RabbitMQ消息队列】详解(一)
  • 消防应急物资智能调用立库:豪越科技助力消防“速战速决”
  • 【玩转 JS 函数式编程_016】DIY 实战:巧用延续传递风格(CPS)重构倒计时特效逻辑
  • 五种IO模型
  • 【数据挖掘】时间序列预测-时间序列预测策略
  • Kubernetes/KubeSphere 安装踩坑记:从 context deadline exceeded 到成功部署的完整排障笔记
  • 同样开源的自动化工作流工具n8n和Dify对比
  • Docker compose 部署微服务项目(从0-1出发纯享版无废话)
  • 代数拓扑和黎曼几何有什么联系吗?
  • 【深度好文】4、Milvus 存储设计深度解析
  • 公网域名如何解析到内网ip服务器?自己域名映射外网访问
  • 3. 使用idea将一个git分支的部分提交记录合并到另一个git分支
  • Golang | 集合求交
  • 常用的性能提升手段--提纲
  • 二叉树的前序、中序和后序遍历:详解与实现
  • 非计算机专业如何利用AI开展跨学科和交叉研究
  • 智能硬件行业售后服务管理:提升客户体验的关键所在
  • Java:网络编程
  • CesiumEarth更新至1.14.0版本,重新设计了图层设置页面,优化了许多界面交互问题
  • K8S Pod 常见数据存储方案
  • Lua 第12部分 日期和时间
  • PH热榜 | 2025-04-27
  • HTML倒数
  • java 类的实例化过程,其中的相关顺序 包括有继承的子类等复杂情况,静态成员变量的初始化顺序,这其中jvm在干什么
  • xe-upload上传文件插件
  • WPF常用技巧汇总 - Part 2
  • Qt项目全局设置UTF-8编码方法(MSVS编译中文报错解决办法)
  • 新能源汽车运动控制器核心芯片选型与优化:MCU、DCDC与CANFD协同设计