2.5. 配置自节点修复 Operator
Self Node Remediation Operator 创建 SelfNodeRemediationConfig CR 和 SelfNodeRemediationTemplate 自定义资源定义(CRD)。
2.5.1. 了解 Self Node Remediation Operator 配置 复制链接链接已复制到粘贴板!
Self Node Remediation Operator 创建了名为 self-node-remediation-config 的 SelfNodeRemediationConfig CR。CR 在 Self Node Remediation Operator 的命名空间中创建。
SelfNodeRemediationConfig CR 的更改重新创建 Self Node Remediation 守护进程集。
SelfNodeRemediationConfig CR 类似于以下 YAML 文件:
apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediationConfig
metadata:
name: self-node-remediation-config
namespace: openshift-operators
spec:
safeTimeToAssumeNodeRebootedSeconds: 180
watchdogFilePath: /dev/watchdog
isSoftwareRebootEnabled: true
apiServerTimeout: 15s
apiCheckInterval: 5s
maxApiErrorThreshold: 3
peerApiServerTimeout: 5s
peerDialTimeout: 5s
peerRequestTimeout: 5s
peerUpdateInterval: 15m
- 1
- 指定 Operator 在恢复不健康节点上运行的受影响工作负载前等待的时间。在仍然在故障节点上运行时启动替换 pod 可能会导致数据崩溃并违反运行一次语义。要防止这种情况的发生,Operator 忽略低于
ApiServerTimeout,ApiCheckInterval,maxApiErrorThreshold,peerDialTimeout, 和peerRequestTimeout字段计算的值。 - 2
- 指定节点中 watchdog 设备的文件路径。如果您为 watchdog 设备输入了一个错误的路径,则 Self Node Remediation Operator 会自动检测到 softdog 设备路径。
如果 watchdog 设备不可用,则
SelfNodeRemediationConfigCR 将使用软件重启。 - 3
- 指定是否启用不健康节点的软件重启。默认情况下,
SoftwareRebootEnabled的值设置为true。要禁用软件重启,请将参数设置为false。 - 4
- 指定检查每个 API 服务器的连接的超时持续时间。此超过了此持续时间,Operator 会启动补救。超时持续时间必须大于或等于 10 毫秒。
- 5
- 指定检查每个 API 服务器的连接的频率。超时持续时间必须大于或等于 1 秒。
- 6
- 指定一个阈值。达到这个阈值后,节点开始联系其同级服务器。阈值必须大于或等于 1 秒。
- 7
- 指定对等对等服务器连接 API 服务器的超时时间。超时持续时间必须大于或等于 10 毫秒。
- 8
- 指定与对等连接建立超时的持续时间。超时持续时间必须大于或等于 10 毫秒。
- 9
- 指定超时从对等点获得响应的时长。超时持续时间必须大于或等于 10 毫秒。
- 10
- 指定更新对等信息的频率,如 IP 地址。超时持续时间必须大于或等于 10 秒。
- Self Node Remediation Operator 在部署命名空间中默认创建 CR。
-
CR 的名称必须是
self-node-remediation-config。 -
您只能有一个
SelfNodeRemediationConfigCR。 -
删除
SelfNodeRemediationConfigCR 会禁用自助节点修复。 -
您可以编辑由 Self Node Remediation Operator 创建的
self-node-remediation-configCR。但是,当您尝试为 Self Node Remediation Operator 创建新 CR 时,日志中会显示以下信息:
controllers.SelfNodeRemediationConfig
ignoring selfnoderemediationconfig CRs that are not named 'self-node-remediation-config'
or not in the namespace of the operator:
'openshift-operators' {"selfnoderemediationconfig":
"openshift-operators/selfnoderemediationconfig-copy"}
2.5.2. 了解自助节点修复模板配置 复制链接链接已复制到粘贴板!
Self Node Remediation Operator 还创建 SelfNodeRemediationTemplate 自定义资源定义(CRD)。此 CRD 为旨在更快地恢复工作负载的节点定义补救策略。可用的补救策略如下:
ResourceDeletion-
此补救策略移除节点上的 pod 和关联的卷附加,而不是删除节点对象。
ResourceDeletion是默认的补救策略。 OutOfServiceTaint-
此补救策略隐式会导致在节点上删除 pod 和关联的卷附加,而不是移除节点对象。它通过将
OutOfServiceTaint策略放在节点上来实现此目的。此策略可以更快地恢复工作负载。自 OpenShift Container Platform 版本 4.13 起,此策略在技术预览上被支持,从 OpenShift Container Platform 版本 4.15 开始正式发布。
Self Node Remediation Operator 为策略 self-node-remediation-resource-deletion-template 创建 SelfNodeRemediationTemplate CR,其 ResourceDeletion 补救策略使用。
SelfNodeRemediationTemplate CR 类似于以下 YAML 文件:
apiVersion: self-node-remediation.medik8s.io/v1alpha1
kind: SelfNodeRemediationTemplate
metadata:
creationTimestamp: "2022-03-02T08:02:40Z"
name: self-node-remediation-<remediation_object>-deletion-template
namespace: openshift-operators
spec:
template:
spec:
remediationStrategy: <remediation_strategy>
2.5.3. 对自节点修复 Operator 进行故障排除 复制链接链接已复制到粘贴板!
2.5.3.1. 常规故障排除 复制链接链接已复制到粘贴板!
- 问题
- 您需要使用自助服务修复 Operator 排除问题。
- 解决方案
- 检查 Operator 日志。
2.5.3.2. 检查守护进程集 复制链接链接已复制到粘贴板!
- 问题
- 已安装 Self Node Remediation Operator,但守护进程集不可用。
- 解决方案
- 检查 Operator 日志中的错误或警告。
2.5.3.3. 失败的补救 复制链接链接已复制到粘贴板!
- 问题
- 一个不健康的节点没有被修复。
- 解决方案
运行以下命令验证
selfNodeRemediationCR 是否已创建:$ oc get snr -A当节点处于不健康状态时,如果
MachineHealthCheck控制器没有创建SelfNodeRemediationCR,请检查MachineHealthCheck控制器的日志。此外,请确保MachineHealthCheckCR 包含使用补救模板所需的规范。如果创建了
SelfNodeRemediationCR,请确保其名称与不健康的节点或机器对象匹配。
2.5.3.4. 即使在卸载了 Operator 后,守护进程集和其他自节点修复 Operator 资源也存在 复制链接链接已复制到粘贴板!
- 问题
- 即使卸载 Operator 后,也会存在 Self Node Remediation Operator 资源,如守护进程集、配置 CR 和补救模板 CR。
- 解决方案
要删除 Self Node Remediation Operator 资源,请运行以下命令来删除每种资源类型的资源:
$ oc delete ds <self-node-remediation-ds> -n <namespace>$ oc delete snrc <self-node-remediation-config> -n <namespace>$ oc delete snrt <self-node-remediation-template> -n <namespace>
2.5.4. 收集自节点修复 Operator 的数据 复制链接链接已复制到粘贴板!
要收集有关自助服务修复 Operator 的调试信息,请使用 must-gather 工具。有关 Self Node Remediation Operator 的 must-gather 镜像的详情,请参考 收集有关特定功能的数据。