微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OOMKilled 德鲁伊干员如何在 examples/tiny-cluster.yaml 中添加资源

如何解决OOMKilled 德鲁伊干员如何在 examples/tiny-cluster.yaml 中添加资源

我正在我的企业 Kube 上部署 Druid-operator。我收到 OOM Killed 错误

NAME                                READY   STATUS      RESTARTS   AGE
druid-operator-c68cf5bc8-n6pzt      1/1     Running     0          107m
druid-tiny-cluster-brokers-0        0/1     OOMKilled   1          62s
druid-tiny-cluster-coordinators-0   0/1     OOMKilled   2          62s
druid-tiny-cluster-historicals-0    0/1     OOMKilled   1          62s
druid-tiny-cluster-routers-0        0/1     OOMKilled   1          62s
tiny-cluster-zk-0                   1/1     Running     0          16h

我尝试使用“资源”添加资源但出现以下错误

error: error validating "examples/tiny-cluster.yaml": error validating data: ValidationError(Druid.spec): unkNown field "resources" in org.apache.druid.v1alpha1.Druid.spec; if you choose to ignore these errors,turn validation off with --validate=false

请建议如何在 tiny-cluster.yaml 中添加“资源”。

谢谢。

解决方法

您可以添加 resource requestsresource limits,如示例中所示:tiny-cluster-hpa.yaml

我将为 requests 添加资源 limitsdruid-tiny-cluster-brokers-0 以说明其工作原理。

正如您在开头所看到的,我没有配置任何资源 requestslimits

$ kubectl get pod druid-tiny-cluster-brokers-0 -n druid-operator
NAME                           READY   STATUS    RESTARTS   AGE
druid-tiny-cluster-brokers-0   1/1     Running   0          66s
$ kubectl describe pod druid-tiny-cluster-brokers-0 -n druid-operator | grep -i "requests\|limits"
$

让我们为 requests 添加示例 limitsdruid-tiny-cluster-brokers-0
注意:我只在 resources 部分中添加了 brokers

$ cat examples/tiny-cluster.yaml
...
  nodes:
    brokers:
      # Optionally specify for running broker as Deployment
      # kind: Deployment
      nodeType: "broker"
      # Optionally specify for broker nodes
      # imagePullSecrets:
      # - name: tutu
      druid.port: 8088
      nodeConfigMountPath: "/opt/druid/conf/druid/cluster/query/broker"
      replicas: 1
      runtime.properties: |
        druid.service=druid/broker

        # HTTP server threads
        druid.broker.http.numConnections=5
        druid.server.http.numThreads=10

        # Processing threads and buffers
        druid.processing.buffer.sizeBytes=1
        druid.processing.numMergeBuffers=1
        druid.processing.numThreads=1
        druid.sql.enable=true
      extra.jvm.options: |-
        -Xmx512M
        -Xms512M
      resources:
        requests:
          memory: "2G"
          cpu: "0.5"
        limits:
          memory: "2G"
          cpu: "2"
...

然后应用更改:

$ kubectl apply -f examples/tiny-cluster.yaml -n druid-operator
druid.druid.apache.org/tiny-cluster configured

最后,我们可以检查一下 limitsrequests 是否设置正确:

$ kubectl describe pod druid-tiny-cluster-brokers-0 -n druid-operator | grep -i -A 2 "requests\|limits"
    Limits:
      cpu:     2
      memory:  2G
    Requests:
      cpu:      500m
      memory:   2G

此外,请确保您的 Kubernetes 节点有足够的资源来运行您的应用程序,因为这也会导致问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。