配置虚拟机的高可用性
概述
硬件存在缺陷,软件包含漏洞。当发生节点级故障,如内核挂起或网络接口控制器(NIC)故障时,集群的工作量不会减少,受影响节点上的工作负载需要在其他地方重新启动。然而,某些工作负载,如 ReadWriteOnce (RWO) 卷和 StatefulSets,可能要求最多只能有一个实例运行。
影响这些工作负载的故障可能导致数据丢失、损坏或两者兼有。确保节点达到一个安全状态(称为 fencing)后再启动工作负载的恢复(称为 remediation),理想情况下还包括节点本身的恢复,这一点非常重要。
依赖管理员干预来确认节点和工作负载的真实状态并不总是实际可行的。为便于此类干预,Alauda Container Platform 提供了多个组件,用于自动化故障检测、fencing 和 remediation。
术语表
组件概述
-
Self Node Remediation Operator
Self Node Remediation Operator 是 Alauda Container Platform 的一个附加 Operator,实现了一个外部的 fencing 和 remediation 系统,该系统会重启不健康的节点并删除资源,如 Pod 和 VolumeAttachment。重启确保工作负载被 fencing,资源删除加快了受影响工作负载的重新调度。与其他外部系统不同,Self Node Remediation 不需要任何管理接口,例如智能平台管理接口(IPMI)或节点配置的 API。
Self Node Remediation 可被故障检测系统使用,如 Machine Health Check 或 Node Health Check。
-
Node Health Check Operator
Node Health Check Operator 是 Alauda Container Platform 的一个附加 Operator,实现了一个监控节点状态的故障检测系统。它没有内置的 fencing 或 remediation 系统,因此必须配置一个提供这些功能的外部系统。默认情况下,它配置为使用 Self Node Remediation 系统。
fencing 和 remediation 过程中的事件流程
操作步骤
Operator 列表
- 下载 与您的平台架构对应的 Alauda Build of SelfNodeRemediation 安装包。
- 使用上传软件包机制 上传 Alauda Build of SelfNodeRemediation 安装包。
- 下载 与您的平台架构对应的 Alauda Build of NodeHealthCheck 安装包。
- 使用上传软件包机制 上传 Alauda Build of NodeHealthCheck 安装包。
部署 Self Node Remediation Operator
-
登录,进入 管理员 页面。
-
点击 Marketplace > OperatorHub,进入 OperatorHub 页面。
-
找到 Alauda Build of SelfNodeRemediation,点击 Install,进入 Install Alauda Build of SelfNodeRemediation 页面。
配置参数:
配置 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 文件如下:
参数说明
- Self Node Remediation Operator 默认在部署命名空间创建该 CR。
- CR 名称必须为
self-node-remediation-config。 - 只能存在一个
SelfNodeRemediationConfigCR。 - 删除
SelfNodeRemediationConfigCR 会禁用 Self Node Remediation。
配置 Self Node Remediation 模板(可选)
Self Node Remediation Operator 还会创建 SelfNodeRemediationTemplate 自定义资源定义(CRD)。该 CRD 定义了节点的 remediation 策略,旨在更快恢复工作负载。可用的 remediation 策略如下:
-
Automatic
该策略简化 remediation 过程,由 Self Node Remediation Operator 决定集群最合适的 remediation 策略。该策略会检查集群中是否存在
OutOfServiceTaint策略。如果存在,Operator 选择OutOfServiceTaint策略;如果不存在,Operator 选择ResourceDeletion策略。Automatic是默认的 remediation 策略。 -
ResourceDeletion
该策略通过删除节点上的 Pod,而非删除节点对象来进行 remediation。
-
OutOfServiceTaint
该策略通过在节点上设置
OutOfServiceTaint,隐式导致节点上的 Pod 和相关卷附件被移除,而非删除节点对象。
Self Node Remediation Operator 会为策略 self-node-remediation-automatic-strategy-template 创建 SelfNodeRemediationTemplate CR,该策略使用 Automatic remediation 策略。
SelfNodeRemediationTemplate CR 示例 YAML 文件如下:
参数说明
部署 Node Health Check Operator
-
登录,进入 管理员 页面。
-
点击 Marketplace > OperatorHub,进入 OperatorHub 页面。
-
找到 Alauda Build of NodeHealthCheck,点击 Install,进入 Install Alauda Build of NodeHealthCheck 页面。
配置参数:
创建 NodeHealthCheck 实例
在集群控制节点执行以下命令:
参数说明:
验证(可选)
模拟虚拟机运行节点的故障,确认虚拟机是否会自动调度到其他节点上运行。