Etcd 高可用故障演练

news/2024/11/19 3:36:08/文章来源:https://www.cnblogs.com/david-cloud/p/18291796

目的

本次演练旨在测试 Kubernetes 的 etcd 高可用性,检验是否能够在其中一个 etcd 节点发生故障的情况下,其他 etcd 节点能够接管其工作,确保集群仍能正常运行。

集群架构

演练场景

在一个三节点的 Kubernetes 集群中,我们将模拟其中一个 etcd 节点的故障,观察剩余的 etcd 节点是否能够正常运行。

演练过程

  1. 确认集群当前健康状态

    kubectl get componentstatuses # 确认所有组件状态均为正常
    kubectl -n kube-system get endpoints | grep etcd # 确认 etcd Endpoints 列表
    kubectl -n kube-system get pods | grep etcd # 确认 etcd Pod 的数量
    # 确认etcd 集群状态
    ETCD_CA_CERT="/etc/kubernetes/pki/etcd/ca.crt"
    ETCD_CERT="/etc/kubernetes/pki/etcd/server.crt"
    ETCD_KEY="/etc/kubernetes/pki/etcd/server.key"
    ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=https://127.0.0.1:2379 \--cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" member list
    ETCDCTL_API=3 /usr/local/bin/etcdctl --endpoints=${HOST1},${HOST2},${HOST3} \--cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" endpoint health
    
     
  2. 停止 M3 节点 etcd 服务

    mkdir -p /home/clay/etcdbak
    mv /etc/kubernetes/manifests/etcd.yaml /home/clay/etcdbak/
    
     
  3. 确认剩余节点是否能正常提供服务

    # 重复执行步骤一命令
    
     

    在其他 etcd 节点上执行 kubectl create 命令测试 Kubernetes 集群是否能够正常运行,例如 kubectl create deployment nginx

    持续通过 vip + 域名两种方式,调用 apiserver 服务,统计影响时长

  4. 启动 M3 节点 etcd 服务

    mv /home/clay/etcdbak/etcd.yaml /etc/kubernetes/manifests/
    
     
  5. 确认集群当前健康状态

    # 重复执行步骤一命令
    
     

🐶 因为现有架构为 apiserver 调用本地 127.0.0.1 的 etcd 服务,所以当 M3 节点 etcd 服务停止后, M3 节点的 apiserver 也不能正常提供服务

所以 haproxy 和 nginx 都必要配置正确的健康检查策略,可以自动剔除故障节点

演练结果

在停止一个 etcd 节点的 etcd 进程后,其他 etcd 节点能够顺利接管其工作,确保 Kubernetes 集群的正常运行。当第一个 etcd 节点重新加入集群后,所有 etcd 节点均能够恢复到健康状态,集群仍然能够正常工作。演练结果证明 Kubernetes 的 etcd 子系统具有较高的可用性,可以有效地应对节点故障的情况。

总结

通过本次演练,我们验证了 Kubernetes 的 etcd 子系统的高可用性,并了解了在一个节点发生故障的情况下,其他节点是如何接管其工作的。在实际生产环境中,我们建议对 Kubernetes 集群的 etcd 子系统进行高可用性测试,以确保集群能够稳定、可靠地运行。此外,我们还应定期检查 Kubernetes 集群的各个组件状态,确保其正常运行,避免出现故障导致的服务中断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741140.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

会计工作的关键一步——用免费可视化工具制作财务报表

会计工作中,关键一步就是把那些繁杂的财务数据整理成清晰易懂的财务报表,这就像是把一堆拼图块变成一幅完整的图画。山海鲸可视化这款免费工具,支持实时数据刷新,能够随时随地更新你的财务数据,确保你拿到的永远是最新鲜的“出炉”数据。操作也非常简单,零代码拖拽式界面…

JVM是如何创建一个对象的?

1. Java对象创建的流程是什么样? 2. JVM执行new关键字时都有哪些操作? 3. JVM在频繁创建对象时,如何保证线程安全? 4. Java对象的内存布局是什么样的? 5. 对象头都存储哪些数据?哈喽,大家好🎉,我是世杰。 本文我为大家介绍面试官经常考察的「Java对象创建流程」照例在…

Kubernetes-Master 基准测试

背景 Kubernetes是容器集群管理系统,为容器化的应用提供资源调度、部署运行、滚动升级、扩容缩容等功能。容器集群管理给业务带来了便利,但是随着业务的不断增长,应用数量可能会发生爆发式的增长。那在这种情况下,Kubernetes能否快速地完成扩容、扩容到大规模时Kubernetes管…

硬核案例分享,一文带你拆解PHP语言体系下的容器化改造

本文介绍了PHP语言体系应用现代化案例,实现了许多与业务无关的通用性应用改造方案,如PHP应用容器化架构方案、基于Prometheus的弹性伸缩方案等等,为此类型客户提供了一个可参考的案例。本文分享自华为云社区《PHP语言体系下的容器化改造,助力夺冠集团应用现代化》,作者: …

CoreDNS 概述及运维实践

概述 什么是 DNS ? 域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。 DNS 不仅方便了人们访问不同的互联网服务,更为很多应用提供了,动态服务发…

从0开始装一套 KubeVirt 1.2.1

KubeVirt 架构 架构virt-api : 负责提供一些 KubeVirt 特有的 api,像是 console, vnc, startvm, stopvm 等。 virt-controller : 管理和监控 VMI 对象及其关联的 Pod,对其状态进行更新。 virt-hander : 以 DaemonSet 运行在每一个节点上,监听 VMI 的状态向上汇报,管理 VMI …

夏日狂欢,铁威马众多惊喜福利来袭,这很city!

随着618的尾声悄然落下 你是否还在为错失的优惠而扼腕叹息? 但请放下遗憾,精彩从未真正落幕。 铁威马夏日狂欢季 正是为你量身打造的专属福利时刻 众多优惠活动接踵而至 往下看⬇ 惊喜福利层出不穷 快来参与吧~ 以旧换新,焕新升级 想要换新机的朋友们,铁威马夏日狂欢季为你…

manim边学边做--Paragraph

对于长篇大段的文本显示,manim中专门提供了一个Paragraph类。使用Paragraph,就不需要用拼接Text的方式来显示大段的文本。Paragraph在manim各个模块中的位置大致如上图中所示。 1. 主要参数 Paragraph可以看作是基于Text的扩展,当你需要显示多行文本的时候,用Paragraph更加…

【免费】可视化工具如何重塑教育资源的呈现方式

相比于其他的付费软件,山海鲸可视化软件内提供了海量模板,而且可以直接下载使用,无需具备专业的编程知识即可快速上手,大大节省了学校制作数据可视化大屏的时间和精力。传统教育模式下,教育资源的分配、学生的学习进度、教师的教学质量等关键信息往往隐藏在海量的数据之中…

什么?这动物图片可以上国家地理?

众所周知,能上国家地理的照片肯定是好照片,那么我们能不能用SD做出类似国家地理地理风格图片呢?一起来看看吧stable difussion中大部分的模型都是关于人的,今天交给大家一些不一样的:如何生成动物图片。在这篇文章中我们将会学到如何生成逼真的动物,可爱的动物,还有幻想中的…

飞书集成平台写入多维表格报错2

报错详情 原因多维表格中缺少审批名称字段解决办法增加这个字段,即可。

飞书集成平台写入多维表格报错

报错信息如下 原因入参中传递对应的字段中是字符串,多维表格中是超链接类型。解决办法修改多维表格的字段类型为文本类型,即可。