Kubernetes中如何进行多master节点容错部署

发布时间:2021-11-19 13:36:55 作者:柒染
来源:亿速云 阅读:505

这篇文章给大家介绍Kubernetes中如何进行多master节点容错部署,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Kubernetes的master服务主要包括etcd(数据存储)、control-manager(控制器)、scheduler(调度器)、apiserver(服务接口),我们将其部署到多节点实现容错。

1、多master节点部署

control-manager(控制器)和scheduler(调度器)通过apiserver(服务接口)来进行集群容器实例的管理,通过向apiserver中的Endpoint加锁的方式来进行leader election, 当目前拿到leader的实例无法正常工作时,别的实例会拿到锁,变为新的leader。缺省情况下election=true,默认安装即支持多实例的自动选主。

首先,使用kubeadm部署第一个主节点。

第二步,安装副节点。

2、apiserver的负载均衡

通过上面的方法设置多个master服务后,kube-apiserver的URL主地址全部指向的是第一个master节点IP地址,仍然存在单点失效的风险。为了实现多点容错,有几种方案(原理都是一样的,只是实现方式不同):

第一种,外部负载均衡器。

使用外部的负载均衡器分配的高可用IP作为apiserver的服务地址,所有的外部访问以及scheduler.conf、controller-manager.conf中的server参数均指向该地址,然后将该地址映射到具体的内部服务器IP上,由外部负载均衡器来分配访问负载。

这种方式部署较为简单,但依赖云服务商提供的负载均衡器。

如果自己安装负载均衡器设备或软件,需要确保其本身是高可用的

第二种,虚拟IP+负载均衡。

使用keepalived实现虚拟IP,主节点不可用时将IP自动漂移到其它节点,工作节点基本不受影响。k8s集群按照虚拟IP进行配置,与第一种方案类似,但通过简单的软件即可实现k8s集群主节点的容错。

虚拟IP(实际上是直接修改真实IP)每一时刻只运行于单个节点上。因此,其它的副节点上的apiserver服务处于standby模式。

通过添加HAProxy等做apiserver的负载均衡,之上再用keepalived做多节点的虚拟IP,可以将多节点变为支持负载均衡的互备模式。

第三种,多主分治+反向代理。

每个节点单独运行,通过etcd共享数据。

3、Kube-dns高可用

kube-dns并不算是Master组件的一部分,可以跑在Node节点上,并用Service向集群内部提供服务。但在实际环境中, 由于默认配置只运行了一份kube-dns实例,在其升级或是所在节点当机时,会出现集群内部dns服务不可用的情况,严重时会影响到线上服务的正常运行。

为了避免故障,请将kube-dns的replicas值设为2或者更多,并用anti-affinity将他们部署在不同的Node节点上。这项操作比较容易被疏忽,直到出现故障时才发现原来是kube-dns只运行了一份实例导致的故障。

关于Kubernetes中如何进行多master节点容错部署就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 单master节点部署和多master节点部署
  2. Kubernetes二进制部署——多master节点集群部署

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes master

上一篇:实用的Python技巧有哪些

下一篇:Docker中日志的操作示例

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》