一种自动切换Kubernetes主节点的方法与流程

文档序号:18329160发布日期:2019-08-03 11:51阅读:1309来源:国知局
一种自动切换Kubernetes主节点的方法与流程

本发明涉及云计算技术领域,特别是一种自动切换kubernetes主节点的方法。



背景技术:

容器技术是一种内核轻量级的操作系统层虚拟化技术,用户的应用软件会运行在容器中,容器技术有诸多优势:

1.敏捷环境:容器技术最大的优点是创建容器实例比创建虚拟机示例快得多,容器轻量级的脚本可以从性能和大小方面减少开销。

2.提高生产力:容器通过移除跨服务依赖和冲突提高了开发者的生产力。每个容器都可以看作是一个不同的服务应用,因此可以独立升级,而不用担心同步。

3.版本控制:每一个容器的镜像都有版本控制,这样就可以追踪不同版本的容器,监控版本之间的差异。

4.运行环境可移植:容器封装了所有运行应用程序所必需的相关的细节比如应用依赖以及操作系统。

5.标准化:大多数容器基于开放标准,可以运行在所有主流linux发行版、microsoft平台等。

6.安全:容器之间的进程是相互隔离的,其中的基础设施亦是如此。这样其中一个容器的升级或者变化不会影响其他容器。

kubernetes是一个基于容器技术的分布式集群管理系统,用于管理云平台中多个主机上的容器化的应用,其提供了应用部署、维护、扩展等功能,利用kubernetes能方便的管理跨主机容器化应用,其重要功能包括:

1.使用容器技术对应用程序包装、实例化、运行。

2.以集群的方式运行、管理跨机器的容器。

3.解决容器跨机器容器之间的通讯问题。

4.kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。

硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。

现有技术有如下缺陷:

1.增加硬件负载均衡服务器对于运维来说无疑增加了使用成本。

2.当主节点宕机的时候集群系统会进入瘫痪状态。

3.无论外部硬件还是第三方软件,都不能同时拥有集群主节点的高可用性与对外提供负载均衡虚ip能力。



技术实现要素:

本发明提供一种自动切换kubernetes主节点的方法,当kubernetes集群中主节点出现宕机的状态时,能够从集群中的其他宿主机自动选举出一个主节点来继续工作,为集群提供了高可用能力,而且成本较低。

本发明包括下列步骤:

s1:在kubernetes集群中,每隔一定时间段,计算每个节点的负载能力权重得分;将每个节点的权重得分保存在etcd分布式key/value中;

s2:当kubernetes集群中主节点宕机时,从节点中选出负载最少的节点,由该节点启动kubernetes主节点,为该主节点配置虚拟ip,其他节点启动kubernetes主节点程序。

可选地,所述每个节点的负载能力权重得分采用如下公式计算:

finalscorenode=etcd*[(weight1*priorityfunc1)+(weight2*priorityfunc2)+…+(weight3*priorityfunc3)]

其中:finalscorenode为负载能力权重得分,etcd为该主机etcd集群可用性,可用是为1,不可用时为0;weight1为1,priorityfunc1为使用空闲cpu利用率计算分数;weight2为1,priorityfunc2为使用空闲内存利用率计算分数;weight3为1,priorityfunc3为使用空闲硬盘容量利用率计算分数;

上述finalscorenode最大值为负载最少的节点。

本发明技术方案具有下述有益效果:

1.相比通过硬件设备实现负载均衡能力本方式通过软件来实现更加节约成本。

2.硬件负载均衡设备实现无法根据kubernetes集群节点可用性提供服务能力。

3.当kubernetes集群中主节点出现宕机的状态时,本方式会从集群中的其他宿主机自动选举出一个主节点来继续工作,为集群提供了高可用能力。

附图说明

图1是本发明实施例的应用程序结构图。

具体实施方式

kubernetes当前版本在设计时,集群主节点必须包含kube-apiserver、kube-scheduler、kube-controller-manager三个核心组件,系统运行时需要部署在同一台物理机或虚拟机上,一旦主节点中断服务,将导致集群所有节点均不可用,造成严重的事故,即对于集群主节点服务并没有提供高可用方案,同时当前kubernetes版本对应用的外部访问并没有提供负载均衡功能,如果要借助外部的负载均衡硬件设备或是第三方的软件来实现,由于不兼容kubernetes服务还需要定制开发。

本发明的目的就是提供一种实现kubernetes集群主节点切换且具备软负载均衡的方法,能够解决上述问题,下面结合附图对本发明作进一步详细描述。

图1为本发明实施例的应用程序结构图,如图所示,node为计算机节点,master为kubernetes集群主节点,k8sproxy为自研应用,同时提供kubernetes集群主节点高可用性功能与集群外部负载均衡vip服务。

实现方式:主机优选规则对符合需求的主机列表进行打分,最终选择一个分值最高的主机启动kubernetes集群主节点,每一个优先级函数会返回一个0-10的分数,分数越高表示主机越“好”,同时每一个函数也会对应一个表示权重的值。最终主机的得分用以下公式计算得出:

finalscorenode=etcd*[(weight1*priorityfunc1)+(weight2*priorityfunc2)+…+(weightn*priorityfuncn)]

其中:finalscorenode为负载能力权重得分,etcd为该主机etcd集群可用性,可用是为1,不可用时为0;weight1为1,priorityfunc1为使用空闲cpu利用率计算分数;weight2为1,priorityfunc2为使用空闲内存利用率计算分数;weight3为1,priorityfunc3为使用空闲硬盘容量利用率计算分数。

本实施例只考虑了cpu、内存及硬盘,在此基础上可根据情况考虑其他资源的使用情况,方法与此相同,在此不再赘述。

weight1~weightn可根据实际情况进行调整,priorityfunc1~priorityfuncn中计算的数据,默认采用将空闲百分比除以0.1来实现分数一一对应,例如百分比为90%,那么priorityfunc返回值为0.9/0.1=9。

每个节点通过对主机cpu、内存、硬盘以及etcd集群健壮性等指标加权值计算出一个节点计算值,并将本节点的计算值在etcd分布式key/value存储中,在每个节点都会运行监控程序,定时同步获取集群节点的计算值,并通过值排序选出最优节点。最优节点会启动kubernetes主节点程序,以及配置虚ip服务,其他非最优节点则启动从kubernetes从节点程序,以及清除虚ip操作。

本实施例只是示例性地描述了一种权重算法,然而本发明并非局限于这里所描述的实施例,本发明保护范围还包括在此基础上所做出的各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1