This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.7. 使用 Node Health Check Operator 部署节点健康检查
使用 Node Health Check Operator 来部署 NodeHealthCheck 控制器。控制器识别不健康的节点,并使用 Poison Pill Operator 来修复不健康的节点。
Node Health Check Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
6.7.1. 关于 Node Health Check Operator 复制链接链接已复制到粘贴板!
Node Health Check Operator 部署 NodeHealthCheck 控制器,以检测集群中某个节点的健康状态。NodeHealthCheck 控制器创建 NodeHealthCheck 自定义资源(CR),用于定义一组条件和阈值来确定节点的健康状态。
Node Health Check Operator 还会安装 Poison Pill Operator 作为默认补救供应商。
当 Node Health Check Operator 检测到不健康的节点时,它会创建一个补救 CR 触发补救供应商。例如,控制器会创建 PoisonPillRemediation CR,它会触发 Poison Pill Operator 来修复不健康的节点。
NodeHealthCheck CR 类似以下 YAML 文件:
- 1
- 指定补救供应商同时修复目标池中节点所需的健康节点数量(以百分比或数量)。如果健康节点的数量等于或超过
minHealthy设定的限制,则会出现补救。默认值为 51%。 - 2
- 防止任何新的补救启动,同时允许持续补救保留。默认值为空。但是,您可以输入字符串数组来识别暂停补救的原因。例如
pause-test-cluster。注意在升级过程中,集群中的节点可能会临时不可用,并被识别为不健康。对于 worker 节点,当 Operator 检测到集群正在升级时,它会停止修复新的不健康节点,以防止此类节点重新引导。
- 3
- 指定补救供应商的补救模板。例如,在 Poison Pill Operator 中。
- 4
- 指定与您要检查的标签或表达式匹配的
selector。默认值为空,用于选择所有节点。 - 5
- 指定决定节点是否被视为不健康的条件列表。
- 6 7
- 指定节点状况的超时持续时间。如果在超时时间内满足了条件,则会修复该节点。超时时间较长可能会导致不健康节点上的工作负载长时间停机。
6.7.1.1. 了解 Node Health Check Operator 工作流 复制链接链接已复制到粘贴板!
当节点标识为不健康状态时,Node Health Check Operator 会检查其他节点不健康的数量。如果健康的节点数量超过 NodeHealthCheck CR 的 minHealthy 字段中指定的数量,控制器会从补救供应商在外部补救模板中提供的详细信息创建一个补救 CR。补救后,kubelet 会更新节点的健康状况。
当节点处于健康状态时,控制器会删除外部补救模板。
6.7.1.2. 关于节点健康检查如何防止与机器健康检查冲突 复制链接链接已复制到粘贴板!
当同时部署节点健康检查和机器健康检查时,节点健康检查会避免与机器健康检查冲突。
OpenShift Container Platform 将 machine-api-termination-handler 部署为默认的 MachineHealthCheck 资源。
以下列表概述了部署节点健康检查和机器健康检查时的系统行为:
如果只有默认机器健康检查,则节点健康检查将继续识别不健康的节点。但是,节点健康检查会忽略处于 Terminating 状态的不健康节点。默认机器健康检查处理处于 Terminating 状态的不健康节点。
日志消息示例
INFO MHCChecker ignoring unhealthy Node, it is terminating and will be handled by MHC {"NodeName": "node-1.example.com"}INFO MHCChecker ignoring unhealthy Node, it is terminating and will be handled by MHC {"NodeName": "node-1.example.com"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果修改了默认机器健康检查(例如,
unhealthyConditions为Ready),或者是否创建额外的机器健康检查,则节点健康检查被禁用。日志消息示例
INFO controllers.NodeHealthCheck disabling NHC in order to avoid conflict with custom MHCs configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}INFO controllers.NodeHealthCheck disabling NHC in order to avoid conflict with custom MHCs configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当只存在默认的机器健康检查,则会重新启用节点健康检查。
日志消息示例
INFO controllers.NodeHealthCheck re-enabling NHC, no conflicting MHC configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}INFO controllers.NodeHealthCheck re-enabling NHC, no conflicting MHC configured in the cluster {"NodeHealthCheck": "/nhc-worker-default"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7.2. 使用 Web 控制台安装 Node Health Check Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台安装 Node Health Check Operator。
先决条件
-
以具有
cluster-admin特权的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中导航至 Operators
OperatorHub。 - 搜索 Node Health Check Operator,然后点 Install。
-
保留安装模式和命名空间的默认选择,以确保将 Operator 安装到
openshift-operators命名空间中。 - 点 Install。
验证
确认安装成功:
-
进入到 Operators
Installed Operators 页面。 -
检查 Operator 是否安装在
openshift-operators命名空间中,其状态是否为Succeeded。
如果 Operator 没有成功安装:
-
导航到 Operators
Installed Operators 页面,并检查 Status列中是否有任何错误或故障。 -
导航到 Workloads
Pods 页面,并检查 openshift-operators项目中报告问题的 pod 的日志。
6.7.3. 使用 CLI 安装 Node Health Check Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc)安装 Node Health Check Operator。
要在您自己的命名空间中安装 Operator,请按照以下步骤执行。
要在 openshift-operators 命名空间中安装 Operator,请跳至步骤 3,因为需要新的 Namespace 自定义资源(CR)和 OperatorGroup CR 的步骤。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。
流程
为 Node Health Check Operator 创建
Namespace自定义资源 (CR):定义
NamespaceCR 并保存 YAML 文件,如node-health-check-namespace.yaml:apiVersion: v1 kind: Namespace metadata: name: node-health-check
apiVersion: v1 kind: Namespace metadata: name: node-health-checkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建
NamespaceCR,请运行以下命令:oc create -f node-health-check-namespace.yaml
$ oc create -f node-health-check-namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
OperatorGroupCR:定义
OperatorGroupCR 并保存 YAML 文件,如node-health-check-operator-group.yaml:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: node-health-check-operator namespace: node-health-check
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: node-health-check-operator namespace: node-health-checkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建
OperatorGroupCR,请运行以下命令:oc create -f node-health-check-operator-group.yaml
$ oc create -f node-health-check-operator-group.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个
SubscriptionCR:定义
SubscriptionCR 并保存 YAML 文件,如node-health-check-subscription.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定您要安装 Node Health Check Operator 的
命名空间。要在openshift-operators命名空间中安装 Node Health Check Operator,请在SubscriptionCR 中指定openshift-operators。 - 2
- 指定订阅的频道名称。要升级到 Node Health Check Operator 的最新版本,您必须手动将订阅的频道名称从
alpha改为candidate。 - 3
- 如果您的指定版本被目录中的后续版本取代,则将批准策略设置为 Manual。此计划阻止自动升级到更新的版本,且需要在启动 CSV 可以完成安装前手动批准。
要创建
SubscriptionCR,请运行以下命令:oc create -f node-health-check-subscription.yaml
$ oc create -f node-health-check-subscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 CSV 资源来验证安装是否成功:
oc get csv -n openshift-operators
$ oc get csv -n openshift-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DISPLAY VERSION REPLACES PHASE node-healthcheck-operator.v0.2.0. Node Health Check Operator 0.2.0 Succeeded
NAME DISPLAY VERSION REPLACES PHASE node-healthcheck-operator.v0.2.0. Node Health Check Operator 0.2.0 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Node Health Check Operator 是否正在运行:
oc get deploy -n openshift-operators
$ oc get deploy -n openshift-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY UP-TO-DATE AVAILABLE AGE node-health-check-operator-controller-manager 1/1 1 1 10d
NAME READY UP-TO-DATE AVAILABLE AGE node-health-check-operator-controller-manager 1/1 1 1 10dCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.7.4. 收集 Node Health Check Operator 的数据 复制链接链接已复制到粘贴板!
要收集有关 Node Health Check Operator 的调试信息,请使用 must-gather 工具。有关 Node Health Check Operator 的 must-gather 镜像的详情,请参阅收集有关特定功能的数据。
6.7.5. 其他资源 复制链接链接已复制到粘贴板!
- 更改 Operator 的更新频道
- 受限网络环境中支持 Node Health Check Operator。如需更多信息,请参阅在受限网络中使用 Operator Lifecycle Manager。