Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

37.2. 安装

在 OpenShift Container Platform 中安装聚合日志堆栈的一般步骤请参考聚合容器日志。在完成安装指南时需要考虑一些重要事项:

要让日志记录 pod 在您的集群间平均分配,应在创建项目时使用空白 节点选择器

$ oc adm new-project logging --node-selector=""

与稍后执行的节点标签结合使用时,这会控制日志记录项目中的 pod 放置。

Elasticsearch(ES)应该部署集群大小至少为 3 个,以应对节点故障。这可以通过在清单主机文件中设置 openshift_logging_es_cluster_size 参数指定。

如需完整的参数列表,请参阅 Ansible 变量

Kibana 需要主机名,该主机名可以从 中解析,无论浏览器将用于访问它。例如,您可能需要将 Kibana 的 DNS 别名添加到公司名称服务,以便从笔记本电脑上运行的 Web 浏览器访问 Kibana。日志记录部署会在其中一个"infra"节点或 OpenShift 路由器运行的位置创建到 Kibana 的 Route。Kibana 主机名别名应指向此机器。此主机名被指定为 Ansible openshift_logging_kibana_hostname 变量。

安装可能需要一些时间,具体取决于镜像是否已从 registry 中检索,以及集群大小。

openshift-logging 项目中,您可以使用 oc get all 检查您的部署。

$ oc get all

NAME                          REVISION                 REPLICAS      TRIGGERED BY
logging-curator               1                        1
logging-es-6cvk237t           1                        1
logging-es-e5x4t4ai           1                        1
logging-es-xmwvnorv           1                        1
logging-kibana                1                        1
NAME                          DESIRED                  CURRENT       AGE
logging-curator-1             1                        1             3d
logging-es-6cvk237t-1         1                        1             3d
logging-es-e5x4t4ai-1         1                        1             3d
logging-es-xmwvnorv-1         1                        1             3d
logging-kibana-1              1                        1             3d
NAME                          HOST/PORT                PATH          SERVICE              TERMINATION   LABELS
logging-kibana                kibana.example.com                     logging-kibana       reencrypt     component=support,logging-infra=support,provider=openshift
logging-kibana-ops            kibana-ops.example.com                 logging-kibana-ops   reencrypt     component=support,logging-infra=support,provider=openshift
NAME                          CLUSTER-IP               EXTERNAL-IP   PORT(S)              AGE
logging-es                    172.24.155.177           <none>        9200/TCP             3d
logging-es-cluster            None                     <none>        9300/TCP             3d
logging-es-ops                172.27.197.57            <none>        9200/TCP             3d
logging-es-ops-cluster        None                     <none>        9300/TCP             3d
logging-kibana                172.27.224.55            <none>        443/TCP              3d
logging-kibana-ops            172.25.117.77            <none>        443/TCP              3d
NAME                          READY                    STATUS        RESTARTS             AGE
logging-curator-1-6s7wy       1/1                      Running       0                    3d
logging-deployer-un6ut        0/1                      Completed     0                    3d
logging-es-6cvk237t-1-cnpw3   1/1                      Running       0                    3d
logging-es-e5x4t4ai-1-v933h   1/1                      Running       0                    3d
logging-es-xmwvnorv-1-adr5x   1/1                      Running       0                    3d
logging-fluentd-156xn         1/1                      Running       0                    3d
logging-fluentd-40biz         1/1                      Running       0                    3d
logging-fluentd-8k847         1/1                      Running       0                    3d

您应该最后有一个类似于下文的设置:

$ oc get pods -o wide

NAME                          READY     STATUS      RESTARTS   AGE       NODE
logging-curator-1-6s7wy       1/1       Running     0          3d        ip-172-31-24-239.us-west-2.compute.internal
logging-deployer-un6ut        0/1       Completed   0          3d        ip-172-31-6-152.us-west-2.compute.internal
logging-es-6cvk237t-1-cnpw3   1/1       Running     0          3d        ip-172-31-24-238.us-west-2.compute.internal
logging-es-e5x4t4ai-1-v933h   1/1       Running     0          3d        ip-172-31-24-235.us-west-2.compute.internal
logging-es-xmwvnorv-1-adr5x   1/1       Running     0          3d        ip-172-31-24-233.us-west-2.compute.internal
logging-fluentd-156xn         1/1       Running     0          3d        ip-172-31-24-241.us-west-2.compute.internal
logging-fluentd-40biz         1/1       Running     0          3d        ip-172-31-24-236.us-west-2.compute.internal
logging-fluentd-8k847         1/1       Running     0          3d        ip-172-31-24-237.us-west-2.compute.internal
logging-fluentd-9a3qx         1/1       Running     0          3d        ip-172-31-24-231.us-west-2.compute.internal
logging-fluentd-abvgj         1/1       Running     0          3d        ip-172-31-24-228.us-west-2.compute.internal
logging-fluentd-bh74n         1/1       Running     0          3d        ip-172-31-24-238.us-west-2.compute.internal
...
...

默认情况下,分配给每个 ES 实例的 RAM 量为 16GB。openshift_logging_es_memory_limitopenshift-ansible 主机清单文件中使用的参数。请记住,这个值 的一半 将传递给单个 elasticsearch pod java 进程 堆大小

了解有关安装 EFK 的更多信息

37.2.1. 大型集群

在 100 个节点或更多节点上,建议首先从 docker pull registry.redhat.io/openshift3/logging-fluentd:v3.11 中拉取日志记录镜像。部署日志记录基础架构 Pod(Elasticsearch、Kibana 和 Curator)后,应一次在 20 个节点中执行节点标签。例如:

使用一个简单的循环:

$ while read node; do oc label nodes $node logging-infra-fluentd=true; done < 20_fluentd.lst

以下也可以工作:

$ oc label nodes 10.10.0.{100..119} logging-infra-fluentd=true

为节点分组 OpenShift 日志记录使用的速度,帮助避免在镜像 registry 等共享资源上发生冲突。

注意

检查任何 "CrashLoopBackOff | ImagePullFailed | Error" 问题的发生情况。oc logs <pod>、oc describe pod <pod>oc get event are helpful diagnostic commands are helpful diagnostic 命令。