kubernetes-高可用集群部署

1. 高可用集群简介

在之前我们做的k8s实验中,都只使用了一个master节点进行调度,所以当这个节点down掉的时候集群将无法进行部署管理工作。而使用k8s高可用集群设置多个master节点来实现高可用,haproxy配置三个master节点实现负载均衡,并且实现高可用。

在这里插入图片描述
实验准备如下:
准备五台虚拟机(server1-5)(172.25.10.1-5)

其中server1是harbor仓库
server2,server3,server4是集群的master端
server2作haproxy负载均衡
server5是集群的worker端

2. haproxy负载均衡

在server2上安装haproxy

[root@server2 ~]# yum install haproxy -y

编辑配置文件

[root@server2 ~]# cd /etc/haproxy/
[root@server2 haproxy]# ls
haproxy.cfg
[root@server2 haproxy]# vim haproxy.cfg 

添加一个监控haproxy的模块,端口为80
在这里插入图片描述

server2既是k8s集群的master节点,又是haproxy端,所以要使用其他端口,启用8443端口访问haproxy,然后访问的模式为tcp
在这里插入图片描述

这三个是后端,使用负载均衡,三个master节点使用6443端口,模式为tcp
在这里插入图片描述启动haproxy服务

[root@server2 haproxy]# systemctl start haproxy.service

查看端口,80监视haproxy,8443作为haproxy传输端口

在这里插入图片描述

访问http://172.25.10.2/admin

在这里插入图片描述

3. 配置高可用集群

提前安装配置好三台master主机的docker和k8s

server3,4下载haproxy
将server2上配置好的配置文件发送过去
在这里插入图片描述
配置好高可用的yum源

在这里插入图片描述安装高可用集群套件

yum install -y pacemaker pcs psmisc policycoreutils-python

给另外两台主机也配置yum源(提前做好免密,操作方便)
在这里插入图片描述
三台master主机都要安装高可用套件

ssh server3 yum install -y pacemaker pcs psmisc policycoreutils-python
ssh server4 yum install -y pacemaker pcs psmisc policycoreutils-python

启动服务并且设置开机自启
在这里插入图片描述
给集群用户一个密码

在这里插入图片描述添加成功
在这里插入图片描述
配置集群节点认证

在这里插入图片描述
创建三个节点的集群,前提是要认证通过
在这里插入图片描述
启动集群,只启动两个集群,第一个是高可用心跳,第二个是集群资源管理器

在这里插入图片描述
查看集群状态,有警告

在这里插入图片描述
禁掉stonith,再次查看节点online
在这里插入图片描述停掉haproxy服务,因为集群需要调用资源,不可以手动启动
在这里插入图片描述
创建vip

[root@server2 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.10.100 cidr_netmask=32 op monitor interval=30s

在这里插入图片描述
手动停掉node

[root@server2 ~]# pcs node standby

查看发现,因为高可用,vip转移到了server3在这里插入图片描述
开启

[root@server2 ~]# pcs node unstandby

server2回来了
在这里插入图片描述
通过本地资源配置haproxy,60s监控一次,将启动haproxy服务交给集群完成

[root@server3 sysctl.d]# pcs resource create haproxy systemd:haproxy op monitor interval=60s

查看状态,发现两个服务并不在一个server上,资源不再一个节点上,需要添加约束
在这里插入图片描述
添加约束,将两个服务放到一个组内,值得注意的是,添加服务的顺序就是启动服务的顺序,谁在前先启动谁

[root@server2 ~]# pcs resource group add hagroup vip haproxy

查看状态,两个服务在一个节点上
在这里插入图片描述停掉server3节点,查看服务漂移到了其他节点上
在这里插入图片描述

4. 搭建k8s高可用集群

打印默认情况下的配置,然后编辑生成文件

kubeadm config print init-defaults > kubeadm-init.yaml
vim kubeadm-init.yaml

添加IP
在这里插入图片描述
更改主机名

在这里插入图片描述

添加vip

在这里插入图片描述
添加私有仓库地址和pod子网,注意k8s的版本要和仓库内的apiserver版本一致
在这里插入图片描述

配置haproxy工作模式ipvs
在这里插入图片描述
拉取镜像

kubeadm config images pull --config kubeadm-init.yaml

在这里插入图片描述
初始化集群, --upload-certs同步证书

kubeadm init --config kubeadm-init.yaml --upload-certs

初始化成功,一个添加master,一个添加worker
在这里插入图片描述查看发现还有pod没有ready,这是因为网络插件没有准备好
在这里插入图片描述
编辑文件,修改网络类型为host-gw直连网关

[root@server2 ~]# vim kube-flannel.yml

在这里插入图片描述

应用文件,pod就绪,网络组件就绪
在这里插入图片描述
使用初始化结束后提示的信息,将server3,server4加入master集群

在这里插入图片描述
所有节点就绪
在这里插入图片描述

5. 添加worker节点

在server5上安装docker和k8s,开机自启

在这里插入图片描述发送json文件和证书给server5
在这里插入图片描述
添加server5的解析

在这里插入图片描述
发送内核参数文件给server5,重新获取内核参数

在这里插入图片描述

在这里插入图片描述

docker info查看cgroup类型修改为systemd
在这里插入图片描述

关闭swap分区

在这里插入图片描述安装ipvs模块

[root@server5 ~]# yum install -y ipvsadm

在这里插入图片描述
安装kubeadm和kubelet,设置开机自启

[root@server5 ~]# yum install kubeadm kubelet

在这里插入图片描述
加入集群

在这里插入图片描述

6、高可用测试

运行一个pod节点于当前master主机,当此master主机down掉后,节点仍然可在其他master主机上查看状况并进行操作管理。现在我们应该关闭其中一个master端,测试其他master能否正常接管,由于我这里server5有haproxy也是master,关掉他,看不到效果了,所以测试关掉server6。

注意三个master k8s主机只容忍最多一个down掉,其余两个保持高可用。

关闭其中一个master端
pod仍然运行
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值