《OpenShift / RHEL / DevSecOps 汇总目录》
文本已在OpenShift 4.10环境中进行验证。

文章目录

  • 场景说明
  • 配置 Machine 健康检查
  • 验证自动修复故障节点
    • 启动观察
    • 模拟Worker节点故障
    • 观察节点修复过程
  • 演示视频
  • 参考

场景说明

就像 Deployment 可以自动恢复故障 Pod,通过 IPI 方式安装的 OpenShift 可以使用 MachineSet 自动恢复故障 Machine/节点。需要注意的是,这种方式只能针对通过 IPI 安装的 OpenShift 集群。

配置 Machine 健康检查

  1. 查看当前 MachineSet,并获取 MachineSet 的名称。
$ oc get machineset -n openshift-machine-api
$ MACHINESET_NAME=$(oc get machineset -n openshift-machine-api --no-headers -o custom-columns=NAME:metadata.name | grep worker)
  1. 执行命令,创建 MachineHealthCheck 对象。如果有多个 MachineSet 可以创建多个 MachineHealthCheck 。
$ cat << EOF | oc apply -f -
apiVersion: machine.openshift.io/v1beta1
kind: MachineHealthCheck
metadata:name: my-machine-health-checknamespace: openshift-machine-api
spec:selector:matchLabels:machine.openshift.io/cluster-api-machine-role: workermachine.openshift.io/cluster-api-machine-type: workermachine.openshift.io/cluster-api-machineset: ${MACHINESET_NAME}unhealthyConditions:- type: Readystatus: Unknowntimeout: 300s- type: Readystatus: 'False'timeout: 300smaxUnhealthy: 50%
EOF

验证自动修复故障节点

启动观察

分别在 2 个终端运行以下命令,持续观察集群的 Worker 节点和 Machine 的数量和状态。

$ watch oc get node -l node-role.kubernetes.io/worker
$ watch oc get machine -n openshift-machine-api -o custom-columns=NAME:metadata.name,PHASE:status.phase,STATE:status.providerStatus.instanceState,HOSTNAME:status.nodeRef.name

模拟Worker节点故障

  1. 执行命令或使用OpenShift控制台进入一个正常运行的 Worker 节点。
$ oc debug node/<WORKER-NODE-NAME>
  1. 执行以下命令,关闭该节点的 kubelet.service。执行完后访问该节点的终端将立即关闭。
# chroot /host
# sudo systemctl disable kubelet.service --now

观察节点修复过程

  1. 首先,故障 Worker 节点的状态变为 NOTReady。
  2. 然后,故障 Worker 节点的状态变为 NOTReady,SchedulingDisabled(随后该故障节点会消失)。另外,在 Machine 列表中多出一个新项,为 Provisioning 阶段(随后会进入到 Provisioned 阶段);而对应故障节点的 Machine 变为 Deleting 阶段(随后该 Machine 会删除消失)。
  3. 随后对应新建的 Machine 的 Worker 节点会重新出现,状态将从 NOTReady 变为 Ready。最后集群中的故障 Machine 和 Worker 节点都被恢复正常。

演示视频

视频

参考

https://cluster-api.sigs.k8s.io/tasks/healthcheck.html

OpenShift - 5分钟自动替换 OpenShift 集群故障节点(附视频)相关推荐

  1. SQLServer集群故障节点DISCONNECTED

    SQLServer集群故障DISCONNECTED 1. 问题描述 2. 解决方案 3. 类似问题解决思路 4. 参考资料 一次SQLSserver+AlwaysOn+WSFC辅助备份节点问题排查解决 ...

  2. mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查

    现象 环境: Server version: 10.0.25-MariaDB-wsrep MariaDB Server, wsrep_25.13.raf7f02e 配置文件: [root@node-2 ...

  3. Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

    Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...

  4. 容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet

    容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet 1 Before you begin 2 重新配置集群活动节点上的 Kubelet 2.1 基本工作流程概览 2.2 ...

  5. Consul 集群单节点与多节点

    Consul 集群 Docker concul 容器服务更新与发现: 简介 搭建 consul 集群: 部署过程: (1)配置 consul 服务器: (2)查看集群信息: (3)通过 httpd a ...

  6. 联通大数据5000台规模集群故障自愈实践

    本文转载自dbaplus社群 作者介绍 余澈,中国联通大数据技术部平台组核心技术负责人,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验.管理过多个上千节点集群,擅长对外多租户平台的维护开 ...

  7. 使用Kubeadm创建k8s集群之节点部署(三十二)

    前言 由于上次忘开申明原创,特再发一次. 本篇部署教程将讲述k8s集群的节点(master和工作节点)部署,请先按照上一篇教程完成节点的准备.本篇教程中的操作全部使用脚本完成,并且对于某些情况(比如镜 ...

  8. redis集群添加节点报错Either the node already knows other nodes (check with CLUSTER NODES) or contains some k

    [README] redis集群添加节点报错 [ERR] Node 192.168.163.202:6380 is not empty. Either the node already knows o ...

  9. elastic集群单节点停机维护

    为了elastic时时提供服务,需要elastic至少状态维持在yellow状态.所有,维护时需要依次对elastic单个节点进行维护. 操作步骤如下: 1.停止elastic的自动分配功能 curl ...

最新文章

  1. JavaScript sync and async(同步和异步)
  2. JS打印页面指定区域
  3. numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)
  4. HTML5 required是必填
  5. 语音识别技术在智能家居中的应用有哪些?
  6. 2016版excel_想要下班直接打卡,这些Excel技巧可以帮到你
  7. Linux定时器实现
  8. Delphi 制作股票分时图
  9. python 分类变量回归_虚拟/分类变量线性回归
  10. (1)桌面客制化之单屏幕修改以及wight修改
  11. android文件夹隐藏,Android – 快速获取隐藏图像和文件夹的方法
  12. 解密“达达-京东到家”的订单即时派发技术原理和实践
  13. Windows 10 下安装pycrypto时出错的解决问题
  14. linux 监听终端输入法,xinit 终端中文输入法
  15. 小彩灯特效 html+css
  16. html采购页面,采购单.html
  17. UG8.0产品设计视频教程 点逆向 STL图片造型设计教程
  18. 转载:Windows的进程创建和映像装入
  19. 菜鸟进阶高手, 推荐 7 个 Python 上手实战项目
  20. SQL server 2019 配置管理器,提示“MMC无法创建管理单元”的解决方法

热门文章

  1. java通过无wifi传数据_没有数据线?使用WiFi实现电脑手机互传文件
  2. vue 防止表单重复提交
  3. 亲测四款好用的Mac电脑手账软件
  4. 一键ghost电脑里已经有其他版本的GHOST怎么办?
  5. 苹果手机怎么下载手机铃声?图文教程,快速学会
  6. FFmpeg - ./configure编译参数全部总结和整理
  7. 初识Flutter之搞定布局约束
  8. 学校计算机只要求一级,如何高效通过计算机一级的考试?也许考试很简单,但也要认真对待...
  9. pascal行人voc_在一个很小的Pascal VOC数据集上训练一个实例分割模型
  10. C/C++ 趋向于运算符的恶作剧