Karmada更高效地实现故障转移

news/2024/10/17 18:28:51/

随着云原生技术的发展,其应用场景不断扩大。越来越多的企业开始将应用程序部署在 Kubernetes 集群中,随着 Kubernetes 集群规模的不断扩大,也带来了许多管理挑战,例如多集群间负载均衡、资源调度、故障转移等问题。为了解决这些问题,Karmada 多集群管理平台应运而生,同时还提供了强大的故障转移能力。

在多云多集群场景中,为了提高业务的高可用性,工作负载可能会被部署在多个不同的集群。在 Karmada 中,当集群发生故障,或是用户不希望在某个集群上继续运行工作负载时,集群状态将被标记为不可用,并被添加上一些污点。Taint-manager 检测到集群故障之后,会从这些故障集群中驱逐工作负载,被驱逐的工作负载将被调度至其他最适合的集群,从而达成故障迁移的目的,保证了用户业务的可用性与连续性。

一、故障迁移的场景

为何需要故障转移?下面来介绍一些多集群故障迁移的场景:

  • 管理员在 Karmada 控制面部署了一个离线业务,并将业务 Pod 实例分发到了多个集群。突然某个集群发生故障,管理员希望 Karmada 能够把故障集群上的 Pod 实例迁移到其他条件适合的集群中;

  • 普通用户通过 Karmada 控制面在某一个集群上部署了一个在线业务,业务包括服务器实例、配置文件等,服务通过控制面上的 ELB 对外暴露,此时某一集群发生故障,用户希望把整个业务能迁移到另一个情况较适合的集群上,业务迁移期间需要保证服务不断服;

  • 管理员将某个集群进行升级,作为基础设施的容器网络、存储等发生了改变,管理员希望在集群升级之前把当前集群上的应用迁移到其他适合的集群中去,业务迁移期间需要保证服务不断服。

二、如何进行故障迁移

上图展示了两种不同的迁移方式 

Karmada 支持用户设置分发策略,在集群发生故障后,将故障集群实例进行自动的集中式或分散式的迁移。如图用户在 Karmada 中加入了三个集群,分别为:member1、member2 和 member3。

  1. 在 Karmada 的控制面部署了一个副本数为 3 的工作负载,并通过部署策略(PropagationPolicy)将其分发到了集群 member1 和 member2 上。
  2. 当集群 member1发生故障之后,其工作负载上的 Pod 实例将会被驱逐,通过 PropagationPolicy/ClusterPropagationPolicy 的副本调度策略 ReplicaSchedulingStrategy 来控制 Pod 被全部迁移到集群 member2 或是分散迁移至两个集群中。

 

三、工作负载被驱逐的时间线

下面通过示例,简单讲解在 DCE 5.0 多云编排模块中,一个工作负载被驱逐的时间线:

首先,每一段时间调用一次集群的 API 用以记录集群的健康状态,当集群状态始终为健康时,我们认定集群的健康状态正常。此时我们将 DCE 与集群 APIserver 之间的 TCP 断开,10s-20s 之内,若没有获取到集群的健康状态将认为集群异常,被标记为非健康状态,同时打上 NoSchedule 的污点,如果集群的不健康状态持续一段时间,在指定时间内若集群仍然没有恢复健康,超过指定的驱逐容忍时长后,将被打上 NoExecute 的污点,最终被驱逐。

 

 

四、影响故障转移时效的指标

在 Karmada 中启用了 Failover 之后,Karmada 提供了几个参数配置选项,与上图对应,分别为:

ClusterMonitorPeriod:检查集群状态的时间间隔,默认 60s;

ClusterMonitorGracePeriod:运行中标记集群不健康检查时长,默认 40s;

ClusterStartupGracePeriod:启动时标记集群不健康的检查时长,默认 600s;

FailoverEvictionTimeout:驱逐容忍时长,集群被标记为不健康后,超过此时长会给集群打上污点,并进入驱逐状态,默认 30s;

ClusterTaintEvictionRetryFrequency:优雅驱逐超时时长,进入优雅驱逐队列后,最长等待时长,超时后会立即删除,默认 5s。

影响故障转移的延时时效的主要有以下 2 个维度的指标,需要组合配置才能最终达到延迟灵敏度的效果。如何使配置过程更加友好?在我们的 DCE 5.0 多云编排模块中,我们将故障转移的相关配置表单化,能够降低用户的使用门槛,同时提高配置的成功率。

1. 集群维度:标记集群为不健康的检查时长、集群驱逐容忍时长。

 

2. 工作负载维度:集群污点容忍时长。

 

当用户创建资源 PropagationPolicy/ClusterPropagationPolicy 后,Karmada 会通过 webhook 为它们自动增加如下集群污点容忍:

 

 

五、优化故障转移时效的优势

1、提高应用程序的可靠性和可用性

Karmada 故障转移功能可以确保工作负载在节点或集群出现故障时不会直接停机,从而提高应用程序的可靠性和可用性。这对于一些已经部署了庞大的业务系统的企业来说是非常重要的。

 

2、提供快速的恢复能力

Karmada 故障转移功能能够快速迁移工作负载到健康节点或集群上,从而缩短节点恢复的时间,减少业务停机时间,大大节约企业的成本和时间。

3、避免业务流量损失

Karmada 故障转移功能能够及时将故障的工作负载迁移至健康节点或集群,从而避免业务流量损失。

今后,相信随着云原生技术的不断发展和完善,Karmada 的故障转移功能在未来能够更加广泛地应用到各个领域,为企业的业务提供更好的保障。

 


http://www.ppmy.cn/news/1222792.html

相关文章

Element UI之Cascader 级联选择器

Cascader 级联选择器 当一个数据集合有清晰的层级结构时,可通过级联选择器逐级查看并选择。 按需引入方式 如果是完整引入可跳过此步骤 import Vue from vue import { Cascader } from element-ui import element-ui/lib/theme-chalk/base.css import element-u…

IgH Master环境搭建

目标:实时linux内核中运行IgH主站,ethercat的用户态工具能看到主站信息。 一、需要的软件 1,vbox虚拟机 https://www.virtualbox.org/,下载VirtualBox 7.0, 备注:windows中不要用wsl开发,wsl运行unbuntu…

温度、机械振动等对电子产品的影响

今天在《印制电路板设计技术》里看到下面一段话,感觉可以非常好的解释一个故障率很高的产品的问题。这个探头用在冷却塔里面,露天,温度很高,尤其是夏天的时候,会有热气直接吹在探头上面;里面的湿度还很高&a…

渗透测试--2.漏洞探测和利用

渗透测试--2.漏洞探测和利用 渗透测试--2.漏洞探测和利用一.漏洞分类二.漏洞探测三.漏洞利用四.漏洞扫描1.Nessuskali安装Nessus1、下载安装2、启动Nessus3、访问Nessus(亲测有效,重装初始化选择nessus essentials版,其他按步骤来就行了)4、获取插件包2.Web应用漏洞扫描器—…

QT自定义信号,信号emit,信号参数注册

qt如何自定义信号 使用signals声明返回值是void在需要发送信号的地方使用 emit 信号名字(参数)进行发送 在需要链接的地方使用connect进行链接 ct进行链接

text/xml和application/xml

困惑 在http消息中,同样是传送xml信息,有的时候看到Content-Type的值是text/xml,有的时候值是application/xml,感到困惑。 例如,用Postman发送http消息给Tomcat中的基于JAX-WS的 web服务: 请求中传送了xm…

利用Pairwise算法自动生成测试用例的

Pairwise算法是一种用于生成测试用例的组合算法,它可以帮助我们在给定的测试参数集合中,生成一组具有高覆盖度的测试用例。 下面是一个使用Python实现Pairwise算法的demo: from itertools import combinationsdef pairwise(parameters):tes…

前端404页面的制作

1、背景 前端开发经常遇到输入路径不存在的问题&#xff0c;为此&#xff0c;把之前项目的404拿出来供大家参考。代码很简单&#xff0c;适合新手入手&#xff0c;效果如下&#xff1a; 2、代码引用的是element-plus框架 <template><div><el-result icon"…