说到高可用,咱们在应用主机环境的时候(非 k8s),咱做高可用有应用过这样的形式:

  • 服务器做主备部署,当主节点和备节点同时存活的时候,只有主节点对外提供服务,备节点就等着主节点挂了之后,立即补位
  • 另外为了提供服务的可用性,做了异地多活,减少服务的接入节点,对流量进行分流等
  • 对于数据库同样也是做备份,定期同步,热备或者冷备

那么后面分享了那么多的对于 k8s 本身组件的原理,咱们能够回过来头看,咱们为什么要抉择 k8s ?

简略来说还是因为 k8s 本身的个性:

  • 本身满足负载平衡
  • 服务自愈
  • 治理的服务还可横向扩容
  • 降级的时候,可能滚动降级,平滑过渡,整个降级过程可能做到十分的丝滑,
  • 若两头呈现降级异样,还能够一键回滚,在回滚过程中,亦不影响原有服务

这所有的所有,咱们在主机环境都是须要消耗很大的人力老本去做的事件,因此,最终才会抉择服务部署在 k8s 下面,能够极大的缩小开发和运维的心智累赘和运维老本

那么上述说的这么好, k8s 是如何保障高可用的呢?

高可用咱们能够从哪些方面思考呢?

从 pod 来看

从 pod 来看高可用的话,后面咱们有说到 pod 能够通过应用高级资源 Deployment 来进行治理,创立,更新,删除 pod ,应用 Deployment 都能够进行平滑的降级和回滚

当然默认说的这种形式是无状态的 pod

如果咱们是的服务是有状态的,运行在 pod 中,咱们依然能够应用 Deployment ,然而只能有 1 个正本,否则会有影响

如果带有数据卷的时候,咱们也能够应用 StatefulSet 资源来进行治理

然而若咱们的 pod 挂掉,咱们在 pod 重启到能够对外提供服务的过程中,服务会中断一段时间

有状态服务,无奈程度扩大的高可用形式

有状态的服务,无奈程度扩大,咱们也能够像最开始我说到的应用主备的这种做法来进行解决

相似的,咱们能够应用领导选举机制,来将多个同样的有状态服务中选举一个服务来对外解决申请

直到这个服务出现异常而宕机之后,应用同样的形式,来在剩下的服务中选举出一个无效的服务,来解决外来申请

具体的算法和 k8s 中的实现形式,我会在前面的文章中进行分享

从 etcd 来看

etcd ,咱们是应用主机环境的时候也有应用过 etcd

次要是用来寄存服务配置,和用来做服务发现的,key 值是服务的目录或者带有 / 的字符串, value 的话,则是服务的 ip 和 端口

etcd 自身就被设计成一个分布式的零碎,自身就能够运行多个 etcd 实例,天生做高可用就是很容易的事件

个别做集群,咱们会部署 3 个,5个 或者是 7 个,起因的话,能够尝试去看看 redis 集群部署一章的分享

能够看这个简图:

多 master ,多 worker 的简图

从 ApiServer 来看

从 ApiServer 来看的话,那就更简略的

这个组件自身无状态,且不缓存数据,他会间接和 本人独立的 etcd 进行通信,对于节点外面的组件,申请给到哪一个 master 外面的 ApiServer 都是能够的

因为 ApiServer 前面的 etcd 组件是分布式的,他们的数据是会跨实例复制数据的

在多 master 的时候,worker 和主节点通信的时候,是要通过一个负载均衡器的,这能够让多个节点的流量进行分流同时还能够保障 worker 的申请能够正确的打到衰弱的 ApiServer 上

从 调度器 scheduler 和控制器管理器 controller manager 来看

对于 scheduler 和控制器管理器绝对就没有 ApiServer 那么简略和不便,因为他们会波及资源管理的抵触

对于他们来说,他们大部分都是在做监听工作,当有多个控制器监听了到 ApiServer 的中的资源变动

那么,例如 3 个 ReplicaSet 控制器,都监听了 ApiServer 将其对应的正本数减少 2 个

这个时候,3 个 ReplicaSet 控制器 都监听了,为了满足冀望,他们便会做满足冀望的事件,最终,环境外面会新产生 6 个 pod

天然,这是咱们所不期待的,这样搞岂不是乱套了,浪费资源

因而 对于控制器管理器和调度器和他们都会踊跃的监听集群的状态,为了防止不良竞争,还是要选用上述的相似主备的思维

给他们应用 --leader-elert 选项 , 默认会进行选主,谁是主,谁就做理论的动作,做监听之后须要做的事件,其余的就等着这个主 死于非命

好了,明天就是这样

明天就到这里,学习所得,若有偏差,还请斧正

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

我是阿兵云原生,欢送点赞关注珍藏,下次见~