Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

4.21. 配置集群日志记录

默认情况下,集群日志被设置为不进行自动部署。设置以下内容以在集群安装过程中启用集群日志记录:

[OSEv3:vars]

openshift_logging_install_logging=true
注意

安装集群日志记录时,还必须在 Ansible 清单文件中指定一个节点选择器,如 openshift_logging_es_nodeselector={"node-role.kubernetes.io/infra": "true"}

如需有关可用集群日志记录变量的更多信息,请参阅 指定日志记录 Ansible 变量

4.21.1. 配置日志存储

必须设置 openshift_logging_es_pvc_dynamic 变量,以便使用持久性存储进行日志记录。如果没有设置 openshift_logging_es_pvc_dynamic,则集群日志记录数据存储在 emptyDir 卷中,当 Elasticsearch Pod 终止时会删除它。

重要

测试显示,使用 RHEL NFS 服务器作为容器镜像 registry 的存储后端会出现问题。这包括用于日志存储的 ElasticSearch。因此,不建议使用 RHEL NFS 服务器来备份核心服务使用的 PV。

由于 ElasticSearch 没有实现自定义 deletionPolicy,所以 Elasticsearch 存储不支持将 NFS 存储用作卷或持久性卷,因为 Lucene 和默认的 deletePolicy 依赖于 NFS 不提供的文件系统行为。数据崩溃和其他问题可能会发生。

市场上的其他 NFS 实现可能没有这些问题。如需了解更多与此问题相关的信息,请联络相关的 NFS 厂商。

在集群安装过程中启用集群日志记录存储有三个选项:

选项 A:动态

如果您的 OpenShift Container Platform 环境有动态卷置备,它可以通过云供应商或一个独立的存储供应商进行配置。例如,云供应商可以在 GCE 上带有 provisioner kubernetes.io/gce-pd 的 StorageClass,而一个独立的存储供应商(如 GlusterFS)则可能具有带有 provisioner kubernetes.io/glusterfsStorageClass。在这两种情况下,请使用以下变量:

[OSEv3:vars]

openshift_logging_es_pvc_dynamic=true

有关动态置备的额外信息,请参阅 动态置备和创建存储类

如果有多个默认动态置备的卷类型,如 gluster-storage 和 glusterfs-storage-block,您可以根据变量指定置备的卷类型。使用以下变量:

[OSEv3:vars]

openshift_logging_elasticsearch_storage_type=pvc
openshift_logging_es_pvc_storage_class_name=glusterfs-storage-block

有关使用 DynamicProvisioningEnabled 来启用或禁用动态置备的详情,请查看 卷配置

选项 B:NFS 主机组

当设置以下变量时,会在集群安装过程中在 [nfs]主机组中的主机上创建一个 NFS 卷(路径为 <nfs_directory>/<volume_name>)例如,使用这些选项的卷路径是 /exports/logging:

[OSEv3:vars]

# nfs_directory must conform to DNS-1123 subdomain must consist of lower case
# alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character

openshift_logging_storage_kind=nfs
openshift_logging_storage_access_modes=['ReadWriteOnce']
openshift_logging_storage_nfs_directory=/exports 1
openshift_logging_storage_nfs_options='*(rw,root_squash)' 2
openshift_logging_storage_volume_name=logging 3
openshift_logging_storage_volume_size=10Gi
openshift_enable_unsupported_configurations=true
openshift_logging_elasticsearch_storage_type=pvc
openshift_logging_es_pvc_size=10Gi
openshift_logging_es_pvc_storage_class_name=''
openshift_logging_es_pvc_dynamic=true
openshift_logging_es_pvc_prefix=logging
1 2
这些参数只适用于 /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml 安装 playbook。这些参数无法用于 /usr/share/ansible/openshift-ansible/playbooks/openshift-logging/config.yml playbook。
3
NFS 卷名称必须是 日志记录
选项 C:外部 NFS 主机

要使用外部 NFS 卷,必须在存储主机上有 <nfs_directory>/<volume_name> 路径。

[OSEv3:vars]

# nfs_directory must conform to DNS-1123 subdomain must consist of lower case
# alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character

openshift_logging_storage_kind=nfs
openshift_logging_storage_access_modes=['ReadWriteOnce']
openshift_logging_storage_host=nfs.example.com 1
openshift_logging_storage_nfs_directory=/exports 2
openshift_logging_storage_volume_name=logging 3
openshift_logging_storage_volume_size=10Gi
openshift_enable_unsupported_configurations=true
openshift_logging_elasticsearch_storage_type=pvc
openshift_logging_es_pvc_size=10Gi
openshift_logging_es_pvc_storage_class_name=''
openshift_logging_es_pvc_dynamic=true
openshift_logging_es_pvc_prefix=logging
1 2
这些参数只适用于 /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml 安装 playbook。这些参数无法用于 /usr/share/ansible/openshift-ansible/playbooks/openshift-logging/config.yml playbook。
3
NFS 卷名称必须是 日志记录

使用以下选项的远程卷路径为 nfs.example.com:/exports/logging

升级或安装带有 NFS 的 OpenShift Container Platform

不建议将 NFS 用于 OpenShift Container Platform 核心组件,因为 NFS(和 NFS 协议)没有提供组成 OpenShift Container Platform 基础架构的应用程序所需的一致性。

因此,安装程序和更新 playbook 需要一个选项来启用使用带核心基础架构组件的 NFS。

# Enable unsupported configurations, things that will yield a partially
# functioning cluster but would not be supported for production use
#openshift_enable_unsupported_configurations=false

如果您在升级或安装集群时看到以下信息,则需要额外的步骤。

TASK [Run variable sanity checks] **********************************************
fatal: [host.example.com]: FAILED! => {"failed": true, "msg": "last_checked_host: host.example.com, last_checked_var: openshift_hosted_registry_storage_kind;nfs is an unsupported type for openshift_hosted_registry_storage_kind. openshift_enable_unsupported_configurations=True mustbe specified to continue with this configuration."}

在 Ansible 清单文件中指定以下参数:

[OSEv3:vars]
openshift_enable_unsupported_configurations=True