Kubernetes基础自学系列 | Kubernetes高可用
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes基础自学系列 | Kubernetes高可用相关的知识,希望对你有一定的参考价值。
视频来源:B站《2021 年末倾力打造 Kubernetes 入门至精通 - 2022 年幸福的开胃菜》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Kubernetes基础自学系列 | 汇总_COCOgsta的博客-CSDN博客
组件框架
etcd高可用
Kubernetes的存储层使用的是etcd。etcd是CoreOS开源的一个高可用强一致性的分布式存储服务,Kubernetes使用etcd作为数据存储后端,把需要记录的pod、rc、service等资源信息存储在etcd中
etcd使用raft算法将一组主机组成集群,raft集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower,candidate与leader。leader和follower之间保持心跳。如果follower在一段时间内没有收到来自leader的心跳,就会转为candidate,发出新的选主请求
Master高可用
Kubernetes的管理层服务包括kube-scheduler和kube-controller-manager。kube-scheduler和kube-controller-manager使用一主多从的高可用方案,在同一时刻只允许一个服务处理具体的任务。Kubernetes中实现了一套简单的选主逻辑,依赖etcd实现scheduler和controller-manager的选主功能
如果scheduler和controller-manager在启动的时候设置了leader-elect参数,它们在启动后会先尝试获取leader节点身份,只有在获取leader节点身份后才可以执行具体的业务逻辑。它们分别会在etcd中创建kube-scheduler和kube-controller-manager的endpoint,endpoint的信息中记录了当前的leader节点信息,以及记录的上次更新时间。leader节点会定期更新endpoint的信息,维护自己的leader身份。每个从节点的服务都会定期检查endpoint的信息,如果endpoint的信息在时间范围内没有更新,它们会尝试更新自己为leader节点。scheduler服务以及controller-manager服务之间不会进行通信,利用etcd的强一致性,能够保证在分布式高并发情况下leader节点的全局唯一性
Kubernetes的接入层服务主要是kube-apiserver。Apiserver本身是无状态的服务,它的主要任务职责是把资源数据存储到etcd中,后续具体的业务逻辑是由scheduler和controller-manager执行的
总结方案
开源解决方案
Sealos特性
99年证书
不依赖ansible haproxy keepalived,一个二进制工具,0依赖
离线安装,不同kubernetes版本下载对应不同版本的资源包即可,离线包包含所有二进制文件配置文件和镜像
高可用通过ipvs实现的localLB,占用资源少,稳定可靠,类似kube-proxy的实现
几乎可兼容所有支持systemd的x86_64架构的环境
轻松实现集群节点的增加/删除
上千用户在线上环境使用sealos,稳定可靠
资源包放在阿里云oss上,再也不用担心网速
Dashboard ingress prometheus等APP同样离线打包,一键安装
Sealos架构图
以上是关于Kubernetes基础自学系列 | Kubernetes高可用的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes基础自学系列 | Kubernetes基本概念
Kubernetes基础自学系列 | Kubernetes高可用
Kubernetes基础自学系列 | Kubernetes资源清单