Menu Close

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

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

注意

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

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

先决条件

  • 必须安装 OpenShift 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:1
            resources:
              limits: 2
                memory: "32Gi"
              requests: 3
                cpu: "1"
                memory: "16Gi"
            proxy: 4
              resources:
                limits:
                  memory: 100Mi
                requests:
                  memory: 100Mi
    1
    根据需要指定 Elasticsearch 的 CPU 和内存请求。如果这些值留白,则 OpenShift Elasticsearch Operator 会设置默认值,它们应足以满足大多数部署的需要。内存请求的默认值为 16Gi,CPU 请求为 1
    2
    pod 可以使用的最大资源量。
    3
    调度 pod 所需的最少资源。
    4
    根据需要指定 Elasticsearch 代理的 CPU 和内存请求。如果这些值留空,OpenShift Elasticsearch Operator 会设置默认值,足以满足大多数部署的需要。内存请求的默认值为 256Mi,CPU 请求的默认值为 100m

在调整 Elasticsearch 内存量时,请求和 限值 应使用相同的值。

例如:

      resources:
        limits: 1
          memory: "32Gi"
        requests: 2
          cpu: "8"
          memory: "32Gi"
1
资源的最大数量。
2
要求的最小数量。

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