[经验交流] Active-Active 方式设置 kubernetes master 多节点高可用
关于 kubernetes master 多节点以及高可用,网上的方法多采取 Active-Standby 方式,即:
通过 pacemaker 等软件使得某种 master 服务(apiserver,scheduler,controller-manager)同一时间只运行一个实例。具体来说,如果有多台master node,上面都安装了scheduler,controller-manager, apiserver:
- 对于schduler服务,同一时间只在一台master 节点上运行,
- 对于controller-manager,同一时间只在一台master 节点上运行,
- 对于apiserver,同一时间只在一台master 节点上运行,
这种方法的可靠性有待探讨,至少我出现过这样的问题:一旦因pacemaker出现问题或者管理员误操作,在多个节点上同时启动了scheduler或者controller-manager,就会造成系统故障。
实际上,参考kubernetes最新文档,官方有相关的提示:
Master elected components
So far we have set up state storage, and we have set up the API server, but we haven’t run anything that actually modifies cluster state, such as the controller manager and scheduler. To achieve this reliably, we only want to have one actor modifying state at a time, but we want replicated instances of these actors, in case a machine dies. To achieve this, we are going to use a lease-lock in the API to perform master election. We will use the --leader-elect flag for each scheduler and controller-manager, using a lease in the API will ensure that only 1 instance of the scheduler and controller-manager are running at once.
也就是说,controller-manager和scheduler 只要加上 --leader-elect=true 参数就可以同时启动,系统会自动选举leader。而apiserver本来就可以多节点同时运行,只要它们连接同一个etcd cluster 就可以了。
按照上面的思路,master ha 架构可以如下设计:

注:
1. 首先设置etcd cluster
关于etcd的cluster设置方法,网上有成熟的文档可以参考;
2. 各个master 节点的apiserver同时启动,指向相同的 etcd cluster
3. apiserver 服务设置 VIP
建议通过keepalived+lvs 或者 haproxy设置,支持负载均衡;
4. 各个master 节点的controller-manager 和 scheduler 加 --leader-elect=true 参数同时启动
经过上面的设置,所有master节点上的相关服务都是 Active 状态,如果有一个节点或者一个服务挂掉都不影响整个集群的运行。
[经验交流] Active-Active 方式设置 kubernetes master 多节点高可用的更多相关文章
- 二进制方式安装Kubernetes 1.14.2高可用详细步骤
00.组件版本和配置策略 组件版本 Kubernetes 1.14.2 Docker 18.09.6-ce Etcd 3.3.13 Flanneld 0.11.0 插件: Coredns Dashbo ...
- K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群
0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...
- 使用睿云智合开源 Breeze 工具部署 Kubernetes v1.12.3 高可用集群
一.Breeze简介 Breeze 项目是深圳睿云智合所开源的Kubernetes 图形化部署工具,大大简化了Kubernetes 部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取 G ...
- kubernetes haproxy+keepalive实现master集群高可用
前言 master的HA,实际是apiserver的HA.Master的其他组件controller-manager.scheduler都是可以通过etcd做选举(--leader-elect),而A ...
- 使用开源Breeze工具部署Kubernetes 1.12.1高可用集群
Breeze项目是深圳睿云智合所开源的Kubernetes图形化部署工具,大大简化了Kubernetes部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取Google的相应资源包,尤其适 ...
- kubernetes 1.15.1 高可用部署 -- 从零开始
这是一本书!!! 一本写我在容器生态圈的所学!!! 重点先知: 1. centos 7.6安装优化 2. k8s 1.15.1 高可用部署 3. 网络插件calico 4. dashboard 插件 ...
- kubernetes集群部署高可用Postgresql的Stolon方案
目录 前言 ....前言 本文选用Stolon的方式搭建Postgresql高可用方案,主要为Harbor提供高可用数据库,Harbor搭建可查看kubernetes搭建Harbor无坑及Harbor ...
- kubeadm部署多master节点高可用k8s1.16.2
一.架构信息 系统版本:CentOS 7.6 内核:3.10.0‐1062.4.1.el7.x86_64 Kubernetes: v1.16.2 Dockerce: 19.03 推荐硬件配置:2核4 ...
- kubeadm使用外部etcd部署kubernetes v1.17.3 高可用集群
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483891&idx=1&sn=17dcd7cd ...
随机推荐
- nodejs入门 SSH服务器远程部署nodejs
最近刚刚接了一个项目我也是个nodejs的初级的人 从开始吧 建立服务器 用什么ssh工具我就不说了 这个界面大家都熟悉吧 点击下面的 All download options wget http: ...
- SpringMvc静态资源加载出错
使用mvc:resource配置 web.xml配置是rest风格的/ 服务器启动没问题 访问地址是报404 另外用了default-servlet的方法加载,服务器启动没错,jsp页面加载静态资源要 ...
- JAVA并发框架之Semaphore实现生产者与消费者模型
分类: Java技术 锁和信号量(Semaphore)是实现多线程同步的两种常用的手段.信号量需要初始化一个许可值,许可值可以大于0,也可以小于0,也可以等于0. 如果大于0,表示 ...
- jsp编程
jsp编程 jsp的实质和工作原理 注释 九大内置对象 jsp文件的结构解析 脚本语法 jsp指令 jsp动作元素 EL表达式 jsp的实质和工作原理: jsp (全称:Java Server Pa ...
- 如何书写高质量的jQuery代码
想必大家对于jQuery这个最流行的javascript类库都不陌生,而且只要是前端开发人员肯定或多或少的使用或者接触过,在今天的这篇文章中,参考了一些资料及实际使用效率,将介绍一些书写高质量jQue ...
- NLP中word2vec的CBOW模型和Skip-Gram模型
参考:tensorflow_manual_cn.pdf Page83 例子(数据集): the quick brown fox jumped over the lazy dog. (1)CBO ...
- 【JS】HTMLprop与attr的区别
与prop一样attr也可以用来获取与设置元素的属性.区别在于,对于自定义属性和选中属性的处理.选中属性指的是 checked,selected 这2种属性1. 对于自定义属性 attr能够获取,pr ...
- 【海洋女神原创】How to: Installshield做安装包时如何添加文件
我一直以为这不是一个问题,可是没想到在几个群内,对于如何向安装包添加文件不解的大有人在,今日稍暇,整理成篇,以供参考 首先我想再大声地说一遍:不要再跟我说英文看不懂了!!!!你做了程序员这一行,就得逼 ...
- scikit-learn使用笔记与sign prediction简单小结
经Edwin Chen的推荐,认识了scikit-learn这个非常强大的python机器学习工具包.这个帖子作为笔记.(其实都没有笔记的意义,因为他家文档做的太好了,不过还是为自己记记吧,为以后节省 ...
- idea-生成key的Java代码
import java.math.BigInteger; import java.util.Date; import java.util.Random; import java.util.Scanne ...