第 2 章 关于部署集群日志记录
在将集群日志记录安装到 OpenShift Container Platform 集群前,请先查阅以下小节。
2.1. 关于部署和配置集群日志记录
OpenShift Container Platform 集群日志记录已设计为可搭配默认配置使用,该配置针对中小型 OpenShift Container Platform 集群进行了调优。
以下安装说明包括一个示例 ClusterLogging
自定义资源(CR),您可以使用它来创建集群日志记录实例并配置集群日志记录部署。
如果要使用默认集群日志记录安装,可直接使用示例 CR。
如果要自定义部署,请根据需要对示例 CR 进行更改。下文介绍了在安装集群日志记录实例或安装后修改时可以进行的配置。请参阅“配置”部分来了解有关使用各个组件的更多信息,包括可以在 ClusterLogging
自定义资源之外进行的修改。
2.1.1. 配置和调优集群日志记录
您可以通过修改 openshift-logging
项目中部署的 ClusterLogging
自定义资源来配置集群日志记录环境。
您可以在安装时或安装后修改以下任何组件:
- 内存和 CPU
-
您可以使用有效的内存和 CPU 值修改
resources
块,以此调整各个组件的 CPU 和内存限值:
spec: logStore: elasticsearch: resources: limits: cpu: memory: 16Gi requests: cpu: 500m memory: 16Gi type: "elasticsearch" collection: logs: fluentd: resources: limits: cpu: memory: requests: cpu: memory: type: "fluentd" visualization: kibana: resources: limits: cpu: memory: requests: cpu: memory: type: kibana curation: curator: resources: limits: memory: 200Mi requests: cpu: 200m memory: 200Mi type: "curator"
- Elasticsearch 存储
-
您可以使用
storageClass
name
和size
参数,为 Elasticsearch 集群配置持久性存储类和大小。Cluster Logging Operator 基于这些参数为 Elasticsearch 集群中的每个数据节点创建PersistentVolumeClaim
。
spec: logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 storage: storageClassName: "gp2" size: "200G"
本例中指定,集群中的每个数据节点将绑定到请求 200G 的 gp2 存储的 PersistentVolumeClaim
。每个主分片将由单个副本支持。
省略 storage
块会导致部署中仅包含临时存储。
spec: logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 storage: {}
- Elasticsearch 复制策略
您可以通过设置策略来定义如何在集群中的数据节点之间复制 Elasticsearch 分片:
-
FullRedundancy
。各个索引的分片完整复制到每个数据节点上。 -
MultipleRedundancy
。各个索引的分片分布到一半数据节点上。 -
SingleRedundancy
。各个分片具有单个副本。只要存在至少两个数据节点,日志就能始终可用且可恢复。 -
ZeroRedundancy
。所有分片均无副本。如果节点关闭或发生故障, 则可能无法获得日志数据。
-
- Curator 调度
- 以 cron 格式指定 Curator 的调度。
spec: curation: type: "curator" resources: curator: schedule: "30 3 * * *"
2.1.2. 修改后的 ClusterLogging
自定义资源示例
以下是使用前面描述的选项修改的 ClusterLogging
自定义资源的示例。
修改后的 ClusterLogging
自定义资源示例
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" namespace: "openshift-logging" spec: managementState: "Managed" logStore: type: "elasticsearch" elasticsearch: nodeCount: 3 resources: limits: memory: 32Gi requests: cpu: 3 memory: 32Gi storage: {} redundancyPolicy: "SingleRedundancy" visualization: type: "kibana" kibana: resources: limits: memory: 1Gi requests: cpu: 500m memory: 1Gi replicas: 1 curation: type: "curator" curator: resources: limits: memory: 200Mi requests: cpu: 200m memory: 200Mi schedule: "*/5 * * * *" collection: logs: type: "fluentd" fluentd: resources: limits: memory: 1Gi requests: cpu: 200m memory: 1Gi