[经验交流] 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 状态,如果有一个节点或者一个服务挂掉都不影响整个集群的运行。

时间: 2024-10-21 12:53:20

[经验交流] Active-Active 方式设置 kubernetes master 多节点高可用的相关文章

使用confd与nginx 实现kubernetes master节点高可用

下载confd 二进制文件 # 创建目录方便存放文件 mkdir confd # 进入新创建的目录 cd confd # 下载 confd wget https://github.com/kelseyhightower/confd/releases/download/v0.16.0/confd-0.16.0-linux-amd64 # 重命名 mv confd-0.16.0-linux-amd64 confd # 给confd 可执行权限 chmod +x confd 生成confd 配置 #

kubeadm部署kubernetes v1.17.4 高可用master节点

环境说明: #操作系统:centos7 #docker版本:19.03.8 #kubernetes版本:v1.17.4 #K8S master 节点IP:192.168.2.175,192.168.2.176,192.168.2.177 #K8S worker节点IP:192.168.2.185,192.168.2.185 #网络插件:flannel #kube-proxy网络转发: ipvs #kubernetes源:使用阿里云源 #service-cidr:10.96.0.0/16 #pod

设置Kubernetes master可调度pod

默认配置下Kubernetes不会将Pod调度到Master节点.如果希望将k8s-master也当作Node使用,可以执行如下命令: taint命令说明: taint          Update the taints on one or more nodes kubectl taint node node01 node-role.kubernetes.io/master- 其中k8s-master是主机节点hostname如果要恢复Master Only状态,执行如下命令: kubectl

Kubernetes 1.17.2 高可用部署

20.0.0.200    10.0.0.200 bs-k8s-master01 管理节点 2c2g 20.0.0.201    10.0.0.201 bs-k8s-master02 管理节点 2c2g 20.0.0.202    10.0.0.202 bs-k8s-master03 管理节点 2c2g 20.0.0.203    10.0.0.203 bs-k8s-node01 业务节点 2c2g 20.0.0.204    10.0.0.204 bs-k8s-node02 业务节点 2c2g

kubernetes高可用设计-CA,etcd

环境准备: master01:192.168.150.128 master02:192.168.150.130 master03:192.168.150.131 node01:192.168.150.132 lb01:192.168.150.133 lb02:192.168.150.134 集群环境变量 后面的嗯部署将会使用到的全局变量,定义如下(根据自己的机器.网络修改): # TLS Bootstrapping 使用的Token,可以使用命令 head -c 16 /dev/urandom

kubeadm部署k8s1.9高可用集群--4部署master节点

部署master节点 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 本文档介绍部署一个三节点高可用 master 集群的步骤,分别命名为k8s-host1.k8s-host2.k8s-host3: k8s-host1:172.16.120.154 k8s-host2:172.16.120.155 k8s-host3:172.16.120.156 安装docker 在每台主机安装do

在Kubernetes上运行高可用的WordPress和MySQL

WordPress是用于编辑和发布Web内容的主流平台.在本教程中,我将逐步介绍如何使用Kubernetes来构建高可用性(HA)WordPress部署. WordPress由两个主要组件组成:WordPress PHP服务器和用于存储用户信息.帖子和网站数据的数据库.我们需要让整个应用程序中这两个组件在高可用的同时都具备容错能力. 在硬件和地址发生变化的时候,运行高可用服务可能会很困难:非常难维护.借助Kubernetes以及其强大的网络组件,我们可以部署高可用的WordPress站点和MyS

使用glusterfs 作为 kubernetes PersistentVolume PersistentVolumeClaim 持久化仓库,高可用Rabbitmq,高可用mysql,高可用redis

glusterfs 怎么集群,网上一搜铺天盖地的 可利用这个特点做单节点高可用,因为K8S 哪怕节点宕机了 master 会在随意一台节点把挂掉的复活 当然我是在自己的环境下跑,经过网络的glusterfs,数据传输,等都有一定的性能损耗,对网络要求也特别高 小文件存储性能也不高等问题. 这里记录一下rabbitmq 单机高可用情景,mysql,mongodb, redis 等,万变不离其宗 事先创建好了 volume,卷名为 env-dev 随便找个客户机挂载 mount -t gluster

Kubernetes实战 高可用集群搭建,配置,运维与应用

1-1 K8S导学 1-2 搭建K8S集群步骤和要点介绍 1-3 搭建三节点Ubuntu环境 1-4 安装容器引擎 1-5 下载Kubeadm.node组件和命令行工具 1-6 向集群中加入worker节点 1-7 安装dashboard和heapster并验证集群安装结束 1-8 小结 2-1 探索K8S集群路线 2-2 Kubeadm init流程揭秘 2-3 Kubeadm join 揭秘 2-4 Kubernetes核心组件详解 2-5 Kubectl详解 3-1 kubernetes集