18.Kubernetes搭建高可用集群

前言

之前我们搭建的集群,只有一个master节点,当master节点宕机的时候,通过node将无法继续访问,而master主要是管理作用,所以整个集群将无法提供服务

高可用集群

下面我们就需要搭建一个多master节点的高可用集群,不会存在单点故障问题

但是在node 和 master节点之间,需要存在一个 LoadBalancer组件,作用如下:

  • 负载

  • 检查master节点的状态

对外有一个统一的VIP:虚拟ip来对外进行访问

高可用集群技术细节

高可用集群技术细节如下所示:

  • keepalived:配置虚拟ip,检查节点的状态

  • haproxy:负载均衡服务【类似于nginx】

  • apiserver:

  • controller:

  • manager:

  • scheduler:

高可用集群步骤

我们采用2个master节点,一个node节点来搭建高可用集群,下面给出了每个节点需要做的事情

初始化操作

我们需要在这三个节点上进行操作

部署keepAlived

下面我们需要在所有的master节点【master1和master2】上部署keepAlive

安装相关包

配置master节点

添加master1的配置

添加master2的配置

启动和检查

在两台master节点都执行

启动后查看master的网卡信息

部署haproxy

haproxy主要做负载的作用,将我们的请求分担到不同的node节点上

安装

在两个master节点安装 haproxy

启动后,我们查看对应的端口是否包含 16443

配置

两台master节点的配置均相同,配置中声明了后端代理的两个master节点服务器,指定了haproxy运行的端口为16443等,因此16443端口为集群的入口

安装Docker、Kubeadm、kubectl

所有节点安装Docker/kubeadm/kubelet ,Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker

安装Docker

首先配置一下Docker的阿里yum源

然后yum方式安装docker

配置docker的镜像源

然后重启docker

添加kubernetes软件源

然后我们还需要配置一下yum的k8s软件源

安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

部署Kubernetes Master【master节点】

创建kubeadm配置文件

在具有vip的master上进行初始化操作,这里为master1

yaml内容如下所示:

然后我们在 master1 节点执行

执行完成后,就会在拉取我们的进行了【需要等待...】

按照提示配置环境变量,使用kubectl工具

按照提示保存以下内容,一会要使用:

--control-plane : 只有在添加master节点的时候才有

查看集群状态

安装集群网络

从官方地址获取到flannel的yaml,在master1上执行

安装flannel网络

检查

master2节点加入集群

复制密钥及相关文件

从master1复制密钥及相关文件到master2

master2加入集群

执行在master1上init后输出的join命令,需要带上参数--control-plane表示把master控制节点加入集群

检查状态

加入Kubernetes Node

在node1上执行

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

集群网络重新安装,因为添加了新的node节点

检查状态

测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

然后我们通过任何一个节点,都能够访问我们的nginx页面

最后更新于