基于 Kubeadm 方式搭建 Kubernetes 多 Master 高可用集群

大纲

高可用集群的概述

Kubernetes 作为容器集群系统,通过健康检查与重启策略实现了 Pod 的故障自我修复能力,通过调度算法将 Pod 分布式部署,并持续监控其预期副本数。当节点发生故障时,系统能够自动在正常节点上重新启动 Pod,从而实现应用层的高可用性。在 Kubernetes 集群环境中,高可用性还需考虑以下两个层面:Etcd 存储库的高可用性,以及 Kubernetes Master 节点的高可用性。Etcd 可以部署 3 集群个节点来保证高可用性。Kubernetes Master 节点承担总控中心角色,通过持续与工作节点(Worker)上的 Kubelet 和 Kube-Proxy 进行通信,维护整个集群的健康工作状态。一旦 Master 节点发生故障,将无法使用 kubectl 工具或 API 进行集群管理。Kubernetes Master 节点主要包含三个核心服务:API Server、Controller Manager 和 Scheduler。其中,Controller Manager 和 Scheduler 组件自身已通过内置的 Leader 选举机制实现了高可用。因此,Kubernetes Master 节点的高可用主要是针对 API Server 组件,该组件以 HTTP API 形式提供服务,其高可用实现方式与 Web 服务器类似,可以通过负载均衡器(比如 HaProxy / Nginx)对其多个实例进行负载均衡,使其支持水平扩展,并可以使用 Keepalived 来保证负载均衡器自身的高可用性。

Kubernetes 高可用集群的两种搭建方式

Kubernetes 高可用集群通常有两种部署方式:二进制手动部署 和 Kubeadm 自动化部署。在生产环境中,更推荐使用二进制部署方式,因为可控性高、组件版本可精细管理,便于根据业务需求进行深度定制。而在开发或测试环境,则可以使用 Kubeadm 快速搭建高可用集群,部署流程简单、效率更高。

多 Master 集群架构

Kubernetes 多 Master 集群的整体架构如下,多个 Master 节点之间通过 HaProxy 实现反向代理和负载均衡,而 HaProxy 通过 Keepalived 来保证自身的高可用性(即双机主备,也叫双机热备)。

多 Master 集群搭建

术语说明

为了方便描述,本文使用 Node 节点 来替代 Kubernetes 的 Worker Node,使用 Master 节点 来替代 Master Node

版本说明

软件版本安装方式
CentOS7.9多个独立虚拟机
Docker18.06.1YUM
Kubelet1.18.0YUM
Kubectl1.18.0YUM
Kubeadm1.18.0YUM
HaProxyYUM
KeepalivedYUM
Dashboard2.0.3Kubernetes

搭建集群

参考资料