3.3.3. 为日志存储配置 CPU 和内存请求

每个组件规格都允许调整 CPU 和内存请求。您应该无需手动调整这些值,因为 Elasticsearch Operator 会设置适当的值以满足环境的要求。

注意

在大型集群中,Elasticsearch 代理容器的默认内存限值可能不足,从而导致代理容器被 OOMKilled。如果您遇到这个问题,请提高 Elasticsearch 代理的内存请求和限值。

每个 Elasticsearch 节点都可以在较低的内存设置下运行,但在生产部署中不建议这样做。对于生产环境,为每个 pod 应该分配的数量应不少于默认的 16Gi。最好为每个 pod 分配不超过 64Gi 的尽量多的数量。

先决条件

  • 必须安装 Cluster Logging 和 Elasticsearch。

流程

  1. 编辑 openshift-logging 项目中的 ClusterLogging 自定义资源(CR):

    $ oc edit ClusterLogging instance
    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      name: "instance"
    ....
    spec:
        logStore:
          type: "elasticsearch"
          elasticsearch:
            resources: 1
              limits:
                memory: "16Gi"
              requests:
                cpu: "1"
                memory: "16Gi"
            proxy: 2
              resources:
                limits:
                  memory: 100Mi
                requests:
                  memory: 100Mi
    1
    根据需要指定 Elasticsearch 的 CPU 和内存请求。如果这些值留白,则 OpenShift Elasticsearch Operator 会设置默认值,它们应足以满足大多数部署的需要。内存请求的默认值为 16Gi,CPU 请求为 1
    2
    根据需要指定 Elasticsearch 代理的 CPU 和内存请求。如果这些值留白,则 OpenShift Elasticsearch Operator 会设置默认值,它们应足以满足大多数部署的需要。内存请求的默认值为 256Mi,CPU 请求的默认值为 100m

如果调整了 Elasticsearch 内存量,您必须同时更改请求值和限制值。

例如:

      resources:
        limits:
          memory: "32Gi"
        requests:
          cpu: "8"
          memory: "32Gi"

Kubernetes 一般遵循节点配置,不允许 Elasticsearch 使用指定的限值。为 请求(request)限值(limit) 设置相同的值可确保 Elasticsearch 可以使用您想要的内存,假设节点具有可用内存。