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 软件包提供。对于容器化方法,openshift3/ose-ansible 容器镜像通过 Red Hat Container Registry 分发。后续小节中提供了每种方法的示例用法。

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

警告

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

表 40.1. 诊断健康检查

检查名称用途

etcd_imagedata_size

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

此检查失败表示 OpenShift Container Platform 镜像数据正在占用大量 etcd,这可能会最终造成 etcd 集群崩溃。

可以通过传递 etcd_max_image_data_size_bytes 变量来设置用户定义的限制。例如,设置 etcd_max_image_data_size_bytes=40000000000 会导致如果 etcd 中存储的镜像数据的总大小超过 40 GB,则检查会失败。

etcd_traffic

此检查会检测到 etcd 主机上的高than-normal 流量。如果找到 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 的存储是否使用 受支持的配置

curator, elasticsearch, fluentd, kibana

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

logging_index_time

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

可以通过传递 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 或基础架构问题。

注意

在配置 Cluster Pre-install Checks 中,包括了一组类似的检查旨在作为安装过程的一部分运行。关于检查证书过期的信息,请参阅重新部署证书

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

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

$ 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 > 设置为 disable。