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页面
最后更新于