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.6. 使用 Poison Pill Operator 修复节点
您可以使用 Poison Pill Operator 自动重新引导不健康的节点。此补救策略可最小化有状态应用程序和 ReadWriteOnce (RWO) 卷的停机时间,并在发生临时故障时恢复计算容量。
6.6.1. 关于 Poison Pill Operator 复制链接链接已复制到粘贴板!
Poison Pill Operator 在集群节点中运行,并重启被识别为不健康的节点。Operator 使用 MachineHealthCheck 控制器来检测集群中节点的健康状况。当节点被识别为不健康时,MachineHealthCheck 资源会创建 PoisonPillRemediation 自定义资源 (CR),这会触发 Poison Pill Operator。
Poison Pill Operator 会最大程度减少有状态应用程序的停机时间,并在发生临时故障时恢复计算容量。无论 IPMI 或 API 等管理界面如何置备节点,都可使用此 Operator 来置备节点,无论集群安装类型是什么,如安装程序置备的基础架构或用户置备的基础架构。
6.6.1.1. 了解 Poison Pill Operator 配置 复制链接链接已复制到粘贴板!
Poison Pill Operator 在 Poison Pill Operator 命名空间中创建 PoisonPillConfig CR,名称为 poison-pill-config。您可以编辑这个 CR。但是,您无法为 Poison Pill Operator 创建新 CR。
PoisonPillConfig CR 中的更改会重新创建 Poison Pill 守护进程集。
PoisonPillConfig CR 类似以下 YAML 文件:
- 1
- 指定存活对等点的超时持续时间,然后 Operator 可以假定一个不健康的节点已被重启。Operator 自动计算这个值的下限。但是,如果不同的节点有不同的 watchdog 超时,则必须将此值改为更高的值。
- 2
- 指定节点中 watchdog 设备的文件路径。如果您输入了到 watchdog 设备的错误路径,Poison Pill Operator 会自动检测到 softdog 设备路径。
如果 watchdog 设备不可用,
PisonPillConfigCR 将使用软件重新引导。 - 3
- 指定是否启用不健康节点的软件重启。默认情况下,
SoftwareRebootEnabled的值设置为true。要禁用软件重启,请将参数设置为false。 - 4
- 指定检查每个 API 服务器的连接的超时持续时间。此超过了此持续时间,Operator 会启动补救。
- 5
- 指定检查每个 API 服务器的连接的频率。
- 6
- 指定一个阈值。达到这个阈值后,节点开始联系其同级服务器。
- 7
- 指定连接 API 服务器的对等的超时持续时间。
- 8
- 指定与 peer 建立连接的超时持续时间。
- 9
- 指定从 peer 获取响应的超时时间。
- 10
- 指定更新对等信息的频率,如 IP 地址。
6.6.1.2. 了解 Poison Pill Remediation 模板配置 复制链接链接已复制到粘贴板!
Poison Pill Operator 还会在 Poison Pill Operator 命名空间中创建 PoisonPillRemediationTemplate CR,其名称为 poison-pill-default-template。此 CR 为节点定义补救策略。
默认补救策略是 NodeDeletion,它会删除节点对象。在 OpenShift Container Platform 4.10 中,Poison Pill Operator 引入了一个新的补救策略,称为 ResourceDeletion。ResourceDeletion 补救策略会删除节点上的 pod 和关联的卷附加,而不是节点对象。此策略有助于更快地恢复工作负载。
PoisonPillRemediationTemplate CR 类似于以下 YAML 文件:
- 1
- 指定补救策略。默认补救策略是
NodeDeletion。
6.6.1.3. 关于 watchdog 设备 复制链接链接已复制到粘贴板!
watchdog 设备可以是以下任意一种:
- 独立电源的硬件设备
- 与它们控制的主机共享电源的硬件设备
-
软件或
softdog中实施的虚拟设备
硬件 watchdog 和 softdog 设备分别具有电子计时器和软件计时器。这些 watchdog 设备用于确保在检测到错误条件时机器进入安全状态。集群需要重复重置 watchdog 定时器以证明它处于健康状态。此计时器可能会因为出现错误条件而造成问题,如死锁、CPU 不足以及网络或磁盘访问的丢失。如果计时器过期,watchdog 设备会假设发生了错误,设备会触发强制重置节点。
硬件 watchdog 设备比 softdog 设备更可靠。
6.6.1.3.1. 了解使用 watchdog 设备的 Poison Pill Operator 行为 复制链接链接已复制到粘贴板!
Poison Pill Operator 根据存在的 watchdog 设备决定补救策略。
如果配置了硬件 watchdog 设备并可用,Operator 会使用它进行补救。如果没有配置硬件 watchdog 设备,Operator 会启用并使用 softdog 设备进行补救。
如果既不支持 watchdog 设备,无论是系统或配置,Operator 都会使用软件重启来修复节点。
其他资源
6.6.2. 使用 Web 控制台安装 Poison Pill Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台安装 Poison Pill Operator。
先决条件
-
以具有
cluster-admin特权的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中导航至 Operators
OperatorHub。 - 从可用 Operator 列表中搜索 Poison Pill Operator,然后单击 Install。
-
保留安装模式和命名空间的默认选择,以确保将 Operator 安装到
openshift-operators命名空间中。 - 点 Install。
验证
确认安装成功:
-
进入到 Operators
Installed Operators 页面。 -
检查 Operator 是否安装在
openshift-operators命名空间中,其状态是否为Succeeded。
如果 Operator 没有成功安装:
-
导航到 Operators
Installed Operators 页面,并检查 Status列中是否有任何错误或故障。 -
进入 Workloads
Pods 页面,检查 poison-pill-controller-manager项目中报告问题的 pod 的日志。
6.6.3. 使用 CLI 安装 Poison Pill Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc) 安装 Poison Pill Operator。
您可以在自己的命名空间中或 openshift-operators 命名空间中安装 Poison Pill Operator。
要在您自己的命名空间中安装 Operator,请按照以下步骤执行。
要在 openshift-operators 命名空间中安装 Operator,请跳至步骤 3,因为需要新的 Namespace 自定义资源(CR)和 OperatorGroup CR 的步骤。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。
流程
为 Poison Pill Operator 创建
Namespace自定义资源(CR):定义
NamespaceCR 并保存 YAML 文件,如poison-pill-namespace.yaml:apiVersion: v1 kind: Namespace metadata: name: poison-pill
apiVersion: v1 kind: Namespace metadata: name: poison-pillCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建
NamespaceCR,请运行以下命令:oc create -f poison-pill-namespace.yaml
$ oc create -f poison-pill-namespace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
OperatorGroupCR:定义
OperatorGroupCR 并保存 YAML 文件,如poison-pill-operator-group.yaml:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: poison-pill-manager namespace: poison-pill
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: poison-pill-manager namespace: poison-pillCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建
OperatorGroupCR,请运行以下命令:oc create -f poison-pill-operator-group.yaml
$ oc create -f poison-pill-operator-group.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个
SubscriptionCR:定义
SubscriptionCR 并保存 YAML 文件,如poison-pill-subscription.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建
SubscriptionCR,请运行以下命令:oc create -f poison-pill-subscription.yaml
$ oc create -f poison-pill-subscription.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 CSV 资源来验证安装是否成功:
oc get csv -n poison-pill
$ oc get csv -n poison-pillCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DISPLAY VERSION REPLACES PHASE poison-pill.v.0.2.0 Poison Pill Operator 0.2.0 Succeeded
NAME DISPLAY VERSION REPLACES PHASE poison-pill.v.0.2.0 Poison Pill Operator 0.2.0 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Poison Pill Operator 是否正在运行:
oc get deploy -n poison-pill
$ oc get deploy -n poison-pillCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY UP-TO-DATE AVAILABLE AGE poison-pill-controller-manager 1/1 1 1 10d
NAME READY UP-TO-DATE AVAILABLE AGE poison-pill-controller-manager 1/1 1 1 10dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Poison Pill Operator 是否创建了
PoisonPillConfigCR:oc get PoisonPillConfig -n poison-pill
$ oc get PoisonPillConfig -n poison-pillCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE poison-pill-config 10d
NAME AGE poison-pill-config 10dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证每个就绪的 pill pod 是否已调度并在每个 worker 节点上运行:
oc get daemonset -n poison-pill
$ oc get daemonset -n poison-pillCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE poison-pill-ds 2 2 2 2 2 <none> 10d
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE poison-pill-ds 2 2 2 2 2 <none> 10dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意control plane 节点不支持这个命令。
6.6.4. 配置机器健康检查以使用 Poison Pill Operator 复制链接链接已复制到粘贴板!
使用以下步骤将机器健康检查配置为使用 Poison Pill Operator 作为补救供应商。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。
流程
创建一个
PoisonPillRemediationTemplateCR:定义
PoisonPillRemediationTemplateCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建
PoisonPillRemediationTemplateCR,请运行以下命令:oc create -f <ppr-name>.yaml
$ oc create -f <ppr-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建或更新
MachineHealthCheckCR 以指向PoisonPillRemediationTemplateCR:定义或更新
MachineHealthCheckCR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定补救模板的详细信息。
要创建
MachineHealthCheckCR,请运行以下命令:oc create -f <file-name>.yaml
$ oc create -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要更新
MachineHealthCheckCR,请运行以下命令:oc apply -f <file-name>.yaml
$ oc apply -f <file-name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.5. 对 Poison Pill Operator 进行故障排除 复制链接链接已复制到粘贴板!
6.6.5.1. 常规故障排除 复制链接链接已复制到粘贴板!
- 问题
- 您需要对 Poison Pill Operator 的问题进行故障排除。
- 解决方案
- 检查 Operator 日志。
6.6.5.2. 检查守护进程集 复制链接链接已复制到粘贴板!
- 问题
- 已安装 Poison Pill Operator,但守护进程集不可用。
- 解决方案
- 检查 Operator 日志中的错误或警告。
6.6.5.3. 失败的补救 复制链接链接已复制到粘贴板!
- 问题
- 一个不健康的节点没有被修复。
- 解决方案
运行以下命令验证
PoisonPillRemediationCR 是否已创建:oc get ppr -A
$ oc get ppr -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
MachineHealthCheck控制器在节点关闭不健康时没有创建PoisonPillRemediationCR,请检查MachineHealthCheck控制器的日志。此外,请确保MachineHealthCheckCR 包含使用补救模板所需的规范。如果创建了
PoisonPillRemediationCR,请确保其名称与不健康节点或机器对象匹配。
- 问题
- 即使卸载 Operator 后,会存在 Poison Pill Operator 资源,如守护进程集、配置 CR 和补救模板 CR。
- 解决方案
要删除 Poison Pill Operator 资源,请运行以下命令删除每种资源类型的资源:
oc delete ds <poison-pill-ds> -n <namespace>
$ oc delete ds <poison-pill-ds> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete ppc <poison-pill-config> -n <namespace>
$ oc delete ppc <poison-pill-config> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pprt <poison-pill-remediation-template> -n <namespace>
$ oc delete pprt <poison-pill-remediation-template> -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.6. 收集 Poison Pill Operator 的数据 复制链接链接已复制到粘贴板!
要收集有关 Poison Pill Operator 的调试信息,请使用 must-gather 工具。有关 Poison Pill Operator 的 must-gather 镜像的信息,请参阅收集特定功能的数据。