Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

40.5. 基于 Ansible 的健康检查

通过用于安装和管理 OpenShift Container Platform 集群的基于 Ansible 的工具 提供了额外的诊断健康检查。它们可能会报告当前 OpenShift Container Platform 安装的常见部署问题。

这些检查可以使用 ansible-playbook 命令( 集群安装期间使用的方法)或 openshift-ansible容器化版本 来运行。对于 ansible-playbook 方法,检查由 openshift-ansible RPM 软件包提供。对于容器化方法,openshift 3/ose-ansible 容器镜像通过 Red Hat Container Registry 发布。每种方法的示例用法在后续章节中提供。

以下健康检查是一组诊断任务,它们旨在使用提供的 health.yml playbook,针对已部署的 OpenShift Container Platform 集群的 Ansible 清单文件运行。

警告

由于健康检查 playbook 可以对环境进行潜在的更改,您必须仅针对 Ansible 部署的集群运行 playbook,并使用用于部署的同一清单文件运行。更改包括安装依赖项,以便检查可以收集所需的信息。在某些情况下,如果 docker 或网络配置等系统组件的当前状态与清单文件中的配置不同,它们可能会改变。只有在您不希望清单文件对现有集群配置进行任何更改时,才应运行这些健康检查。

表 40.1. 诊断健康检查

检查名称用途

etcd_imagedata_size

此检查测量 etcd 集群中 OpenShift Container Platform 镜像数据的总大小。如果计算的大小超过用户定义的限制,检查会失败。如果没有指定限制,则当镜像数据大小等于 etcd 集群中当前使用的空间的 50% 或以上时,这个检查会失败。

此检查失败表示 OpenShift Container Platform 镜像数据占用了 etcd 中的大量空间,这最终可能会导致 etcd 集群崩溃。

用户定义的限制可以通过传递 etcd_max_image_data_size_bytes 变量来设置。例如,如果 etcd_max_image_data_size_bytes=40000000000 的值超过 40 GB,则设置 etcd_max_image_data_size_bytes=4000000 会导致检查失败。

etcd_traffic

此检查检测到 etcd 主机上的较高流量。如果找到具有 etcd 同步持续时间警告的 journalctl 日志条目,它将失败。

有关提高 etcd 性能的更多信息,请参阅 OpenShift Container Platform etcd 主机的建议 实践和 红帽知识库

etcd_volume

此检查确保 etcd 集群的卷用量低于用户指定的最大阈值。如果未指定最大阈值,则默认为总卷大小的 90%

用户定义的限制可通过传递 etcd_device_usage_threshold_percent 变量来设置。

docker_storage

仅在依赖于 docker 守护进程(节点和容器化安装)的主机上运行。检查 docker 的总用量没有超过用户定义的限制。如果没有设置用户自定义的限制,则 docker 的最大用量阈值默认为可用总大小的 90%。

您可以使用清单文件中的变量来设置总百分比用量阈值,如 max_thinpool_data_usage_percent=90

这也会检查 docker 的存储是否使用 受支持的配置

Curatorelasticsearchfluentdkibana

这组检查会验证 Curator、Kibana、Elasticsearch 和 Fluentd Pod 是否已部署并 处于运行状态,并且能够在控制主机和公开的 Kibana URL 之间建立连接。只有在 openshift_logging_install_logging 清单变量被设置为 true 时才运行,以确保它们在启用了 集群日志记录的部署 中执行。

logging_index_time

此检查检测到,在日志记录堆栈部署中 Elasticsearch 创建日志和日志聚合间隔大于正常时间延迟。如果在超时(默认为 30 秒)内无法通过 Elasticsearch 查询新日志条目,它将失败。仅当启用了日志记录时,检查才会运行。

用户定义的超时可以通过传递 openshift_check_logging_index_timeout_seconds 变量来设置。例如,设置 openshift_check_logging_index_timeout_seconds=45 会导致在 45 秒后无法通过 Elasticsearch 查询新创建的日志条目时检查失败。

sdn

此检查对 OpenShift Container Platform SDN 执行以下集群级别的诊断:

  • 验证 master 主机是否可以连接到 kubelet。
  • 验证节点可以互相路由数据包。
  • 验证节点地址。
  • 验证 HostSubnet 对象。

如果使用 ansible-playbook 命令指定 openshift_checks_output_dir 变量,检查也会保存 OpenShift Container Platform API 中的网络相关对象,以及日志、OVS 流、iptables 规则和其他网络配置信息。有关如何设置变量的示例,请参见下面的 ansible-playbook 命令用法示例。

oc adm diagnostics 命令无法调度诊断 pod 或诊断 pod 没有提供足够信息来排除问题时,这个检查可以帮助您诊断 pod 或基础架构问题。

注意

有关在安装过程中一部分的类似检查,请参考 配置集群预安装检查。关于检查证书过期的信息,请参阅重新部署证书

40.5.1. 通过 ansible-playbook 运行健康检查

要使用 ansible -playbook 命令运行 openshift- ansible 健康检查,请切换到 playbook 目录,指定集群的清单文件并运行 health.yml playbook:

$ cd /usr/share/ansible/openshift-ansible
$ ansible-playbook -i <inventory_file> \
    playbooks/openshift-checks/health.yml

要在命令行中设置变量,请以 key=value 格式将 -e 标志与任何所需的变量一起包含。例如:

$ cd /usr/share/ansible/openshift-ansible
$ ansible-playbook -i <inventory_file> \
    playbooks/openshift-checks/health.yml \
    -e openshift_check_logging_index_timeout_seconds=45 \
    -e etcd_max_image_data_size_bytes=40000000000

要禁用特定的检查,请在运行 playbook 前使用以逗号分隔的检查名称列表包含 openshift_disable_check 变量。例如:

openshift_disable_check=etcd_traffic,etcd_volume

另外,也可在运行 ansible-playbook 命令时使用 -e openshift_disable_check=<check1>,<check2> 将任何检查设置为作为变量禁用。