云原生系列(六)

简介: 云原生系列(六)

K8S的高可用部署架构

可以设置HA集群

①、使用堆叠(stacked)控制平面节点,其中etcd节点与控制平面节点共存。

②、使用外部etcd节点,其中etcd节点与控制平面不同的节点上运行

在设置HA集群之前,应该仔细考虑每种拓扑的优缺点。

堆叠(Stacked) etcd拓扑

主要特点:

①、etcd分布式数据存储集群堆叠在kubeadm管理的控制平面节点上,作为控制平面的一个组件运行。

②、每个控制平面节点运行kube-apiserver,kube-scheduler和kube-controller-manager实例。

③、kube-apiserver使用LB暴漏给工作节点

④、每个控制平面节点创建一个本地的etcd成员(member),这个etcd成员只与该节点的Kube-apiserver通信。这同样适用于本地kube-controller-manager和kube-scheduler实例。

⑤、简单概括:每个master节点上运行一个apiserver和etcd,etcd只与本地apiserver通信。

⑥、这种拓扑将控制平面和etcd成员耦合在同一个节点上,相对使用外部etcd集群,设置起来更简单,而且更易于副本管理。

⑦、然而堆叠集群存在耦合失败的风险,如果一个节点发生故障,则etcd成员和控制平面的实力都将丢失,并且冗余会受到影响,可以通过添加更多平面节点来降低此风险,应该为HA集群运行至少三个堆叠的控制平面节点(防止脑裂)

⑧、这是kubeadm中的默认拓扑,当使用kubeadm init和kubeadm join --control-plane时,在控制平面节点上会自动创建本地etcd成员、

⑨、工作节点 worker node通过负载均衡组件load balancer,由于worker节点和master节点之间的通讯协议是Http协议,无论是http1.0还是1.2都是通过nginx来做负载均衡的,LoadBalancer可以使nginx如果要保证load balancer的高可用,还需要在nginx加上keep Alive,来保证nginx的高可用,然后由woker来访问高可用的nginx的虚拟IP:来实现APIServer的高可用。

⑩、那么在资源足够的情况下:每个master节点是个独立的虚拟机器,如果其中一个挂了,那么这个集群是可用的。如果资源不够的情况下,这三个节点也可以通过业务资源pod调度的每个工作节点大概120G的内存,大概有5个,16核的CPU

外部etcd拓扑

939887de56a2ed6dd97fc90c51661bc5.png

主要特点:

①、具有外部etcd的HA集群是一种这样的拓扑,其中etcd分布式数据存储集群在独立于控制平面节点的其他节点上运行

②、就像堆叠的etcd拓扑一样,外部etcd拓扑中的每个控制平面节点都运行Kube-apiserver,kube-scheduler和kube-controller-manager实例。

③、同样kube-apiserver使用负载均衡器暴漏给工作节点,但是,etcd成员在不同的主机上运行,每个etcd主机与每个控制平面节点的kube-apiserver通信。

④、简单概括:etcd集群运行在单独的主机上,每个etcd都与apiserver节点通信。

⑤、这种拓扑结构解耦了控制平面和etcd成员。

因此,它提供了一种HA集群,其中失去控制平面实例或者etcd成员的影响较小,并且不会像堆叠的HA拓扑那样影响集群冗余。

1、但是,此拓扑需要两倍于堆叠HA拓扑的主机数量,具有此拓扑的HA集群至少需要2个用于控制平面节点的主机和二个用于etcd节点的主机

2、需要单独设置外部etcd集群, 把元数据存储的组件给解耦 etcd,类似zookeeper,通过配置属性里面写好etcd的地址,master就不管etcd了,使用外部的etcd,这个时候有一个好处,比如说etcd给其他组件:hot key用。不是被k8s独占,这种方式是更加高可用的。

var first_sceen__time = (+new Date()); if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); }

阅读 22

相关文章
|
Kubernetes Cloud Native Serverless
什么是云原生?聊聊云原生的前世今生
什么是云原生,云原生是在一个怎么样的背景下被提出来的,云原生和传统所说的云计算概念有什么不同?聊聊云原生的前世今生那些事。
2483 0
|
3月前
|
Kubernetes Cloud Native 调度
云原生系列(八)
云原生系列(八)
|
3月前
|
Kubernetes Cloud Native 安全
云原生系列(四)
云原生系列(四)
|
3月前
|
Cloud Native Linux 网络安全
云原生系列(二)
云原生系列(二)
|
3月前
|
Kubernetes Cloud Native API
云原生系列(七)
云原生系列(七)
|
3月前
|
Cloud Native 持续交付 Docker
云原生系列(一)
云原生系列(一)
|
3月前
|
Kubernetes Cloud Native API
云原生系列(十)
云原生系列(十)
|
监控 Cloud Native Devops
云原生应用在那些场景应用广泛
云原生应用在那些场景应用广泛
|
7月前
|
Kubernetes 监控 Cloud Native
云原生与ChaosMeta
ChaosMeta是一款专为云原生环境和自动化演练设计的先进混沌工程平台。它源自蚂蚁集团内部广受认可的混沌工程平台XMonkey,并代表了蚂蚁集团在跨BU级别大规模红蓝攻防演练中多年来积累的丰富经验、技术能力和产品实践。作为XMonkey的开源版本,ChaosMeta凝结了蚂蚁集团稳定性团队在混沌工程领域的方法论以及经过复杂故障场景驱动下的独到见解。ChaosMeta不仅继承了XMonkey在多年混沌工程实践中的成熟技术和方法论,也体现了开放源代码的承诺,通过与全球开发者和专业人士的互动交流,ChaosMeta努力成为连接实际工程问题和前沿技术研究的桥梁。
122 0
|
7月前
|
SQL 存储 Cloud Native
云原生
云原生的大数据处理架构,该架构具有PB级数据秒级分析的能力。 1. "云原生MPP水平扩展架构":云原生(Cloud Native)是一种设计和构建应用程序的方法,它利用云计算的优势,强调可扩展性、弹性、敏捷性和快速迭代。MPP(大规模并行处理)是一种数据库处理技术,它将数据
73 7