You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Druid Operator的examples/tiny-cluster.yaml中配置资源以解决OOMKilled问题

解决Druid-operator集群Pod OOMKilled及资源配置错误问题

你遇到的核心问题是资源配置字段的层级位置错误,导致CRD验证失败,同时所有Druid组件Pod因内存不足触发OOMKilled。Druid-operator的自定义资源定义(CRD)中,resources字段并非全局放在Druid.spec下,而是需要针对每个Druid组件(Broker、Coordinator、Historical、Router)单独配置——毕竟不同组件的资源需求差异很大。

正确的资源配置方式

你需要修改tiny-cluster.yaml,在每个组件的Pod模板容器定义中添加resources字段,具体层级为:Druid.spec.[component].template.spec.containers[0].resources。

以下是完整的修改示例(包含所有Druid组件的资源配置):

apiVersion: druid.apache.org/v1alpha1
kind: Druid
metadata:
  name: druid-tiny-cluster
spec:
  zookeeper:
    url: tiny-cluster-zk-0.tiny-cluster-zk:2181
    path: /druid
  # Broker组件资源配置
  brokers:
    replicas: 1
    template:
      spec:
        containers:
        - name: broker
          image: apache/druid:26.0.0
          ports:
          - containerPort: 8082
          resources:
            requests:
              memory: "1Gi"
              cpu: "500m"
            limits:
              memory: "2Gi"
              cpu: "1"
  # Coordinator组件资源配置
  coordinators:
    replicas: 1
    template:
      spec:
        containers:
        - name: coordinator
          image: apache/druid:26.0.0
          ports:
          - containerPort: 8081
          resources:
            requests:
              memory: "1Gi"
              cpu: "500m"
            limits:
              memory: "2Gi"
              cpu: "1"
  # Historical组件资源配置(通常需要更多内存缓存Segment)
  historicals:
    replicas: 1
    template:
      spec:
        containers:
        - name: historical
          image: apache/druid:26.0.0
          ports:
          - containerPort: 8083
          resources:
            requests:
              memory: "2Gi"
              cpu: "1"
            limits:
              memory: "4Gi"
              cpu: "2"
  # Router组件资源配置
  routers:
    replicas: 1
    template:
      spec:
        containers:
        - name: router
          image: apache/druid:26.0.0
          ports:
          - containerPort: 8888
          resources:
            requests:
              memory: "1Gi"
              cpu: "500m"
            limits:
              memory: "2Gi"
              cpu: "1"

关键注意事项

  1. 层级正确性:必须将resources放在对应组件的Pod模板容器下,这是解决unknown field "resources"错误的核心——之前你直接放在Druid.spec下不符合CRD的定义规则。
  2. 内存适配:因为你的Pod触发了OOMKilled,建议根据组件角色调整内存限制:Historical节点需要更多内存用于缓存Segment,其他组件可配置适中的资源额度。
  3. 应用修改:完成配置后,重新应用文件即可:
    kubectl apply -f examples/tiny-cluster.yaml
    

这样配置后,Kubernetes会为每个Druid组件Pod分配指定的资源,既可以通过CRD验证,也能避免OOMKilled问题。

内容的提问来源于stack exchange,提问作者Newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:04:09